diff --git a/package-lock.json b/package-lock.json index ebe2359041..a90f953517 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "123.0.0-nightly.20250530", + "binaryen": "129.0.0-nightly.20260424", "long": "^5.2.4" }, "bin": { @@ -18,15 +18,15 @@ }, "devDependencies": { "@eslint/js": "^10.0.1", - "@types/node": "^25.5.0", + "@types/node": "^25.6.0", "as-float": "^1.0.1", - "diff": "^8.0.4", - "esbuild": "^0.27.0", - "eslint": "^10.1.0", + "diff": "^9.0.0", + "esbuild": "^0.28.0", + "eslint": "^10.2.1", "glob": "^13.0.6", - "globals": "^17.4.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.57.2" + "globals": "^17.5.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.0" }, "engines": { "node": ">=20", @@ -38,9 +38,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", - "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", + "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", "cpu": [ "ppc64" ], @@ -55,9 +55,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", - "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", + "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", "cpu": [ "arm" ], @@ -72,9 +72,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", - "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", + "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", "cpu": [ "arm64" ], @@ -89,9 +89,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", - "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", + "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", "cpu": [ "x64" ], @@ -106,9 +106,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", - "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", + "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", "cpu": [ "arm64" ], @@ -123,9 +123,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", - "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", + "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", "cpu": [ "x64" ], @@ -140,9 +140,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", - "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", + "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", "cpu": [ "arm64" ], @@ -157,9 +157,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", - "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", + "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", "cpu": [ "x64" ], @@ -174,9 +174,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", - "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", + "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", "cpu": [ "arm" ], @@ -191,9 +191,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", - "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", + "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", "cpu": [ "arm64" ], @@ -208,9 +208,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", - "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", + "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", "cpu": [ "ia32" ], @@ -225,9 +225,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", - "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", + "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", "cpu": [ "loong64" ], @@ -242,9 +242,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", - "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", + "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", "cpu": [ "mips64el" ], @@ -259,9 +259,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", - "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", + "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", "cpu": [ "ppc64" ], @@ -276,9 +276,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", - "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", + "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", "cpu": [ "riscv64" ], @@ -293,9 +293,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", - "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", + "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", "cpu": [ "s390x" ], @@ -310,9 +310,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", - "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", + "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", "cpu": [ "x64" ], @@ -327,9 +327,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", - "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", + "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", "cpu": [ "arm64" ], @@ -344,9 +344,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", - "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", + "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", "cpu": [ "x64" ], @@ -361,9 +361,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", - "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", + "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", "cpu": [ "arm64" ], @@ -378,9 +378,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", - "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", + "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", "cpu": [ "x64" ], @@ -395,9 +395,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", - "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", + "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", "cpu": [ "arm64" ], @@ -412,9 +412,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", - "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", + "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", "cpu": [ "x64" ], @@ -429,9 +429,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", - "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", + "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", "cpu": [ "arm64" ], @@ -446,9 +446,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", - "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", + "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", "cpu": [ "ia32" ], @@ -463,9 +463,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", - "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", + "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", "cpu": [ "x64" ], @@ -509,13 +509,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.23.3", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz", - "integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==", + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^3.0.3", + "@eslint/object-schema": "^3.0.5", "debug": "^4.3.1", "minimatch": "^10.2.4" }, @@ -524,22 +524,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz", - "integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz", + "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.1.1" + "@eslint/core": "^1.2.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz", - "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -571,9 +571,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz", - "integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -581,13 +581,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz", - "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", + "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^1.1.1", + "@eslint/core": "^1.2.1", "levn": "^0.4.1" }, "engines": { @@ -668,30 +668,30 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", - "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.19.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.2.tgz", - "integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.0.tgz", + "integrity": "sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/type-utils": "8.57.2", - "@typescript-eslint/utils": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/type-utils": "8.59.0", + "@typescript-eslint/utils": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -701,9 +701,9 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.57.2", + "@typescript-eslint/parser": "^8.59.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { @@ -717,16 +717,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.2.tgz", - "integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.0.tgz", + "integrity": "sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3" }, "engines": { @@ -738,18 +738,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.2.tgz", - "integrity": "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.0.tgz", + "integrity": "sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.57.2", - "@typescript-eslint/types": "^8.57.2", + "@typescript-eslint/tsconfig-utils": "^8.59.0", + "@typescript-eslint/types": "^8.59.0", "debug": "^4.4.3" }, "engines": { @@ -760,18 +760,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.2.tgz", - "integrity": "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.0.tgz", + "integrity": "sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2" + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -782,9 +782,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.2.tgz", - "integrity": "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.0.tgz", + "integrity": "sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==", "dev": true, "license": "MIT", "engines": { @@ -795,21 +795,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.2.tgz", - "integrity": "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.0.tgz", + "integrity": "sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/utils": "8.57.2", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -820,13 +820,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz", - "integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.0.tgz", + "integrity": "sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==", "dev": true, "license": "MIT", "engines": { @@ -838,21 +838,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.2.tgz", - "integrity": "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.0.tgz", + "integrity": "sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.57.2", - "@typescript-eslint/tsconfig-utils": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", + "@typescript-eslint/project-service": "8.59.0", + "@typescript-eslint/tsconfig-utils": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -862,20 +862,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.2.tgz", - "integrity": "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.0.tgz", + "integrity": "sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2" + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -886,17 +886,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.2.tgz", - "integrity": "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.0.tgz", + "integrity": "sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/types": "8.59.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -978,9 +978,9 @@ } }, "node_modules/binaryen": { - "version": "123.0.0-nightly.20250530", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-123.0.0-nightly.20250530.tgz", - "integrity": "sha512-d1zPHBN5YlOd3Ff+OUxvVExuFeh8heSnqe+X3bjItFxGLvn4VGBKmrvv7pgy/cRhrIUGuPW138iaWfDhwjyDqg==", + "version": "129.0.0-nightly.20260424", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-129.0.0-nightly.20260424.tgz", + "integrity": "sha512-pdzKrDKhIIfSV+x8vuw8PDvLKdgVAeg2v6X4BYGE1pX2KZWXJtkTXd7OZhDtgzACrRebka3T9e7K0AxbaYB9mw==", "license": "Apache-2.0", "bin": { "wasm-as": "bin/wasm-as", @@ -1048,9 +1048,9 @@ "license": "MIT" }, "node_modules/diff": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", - "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1058,9 +1058,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", - "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", + "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1071,32 +1071,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.4", - "@esbuild/android-arm": "0.27.4", - "@esbuild/android-arm64": "0.27.4", - "@esbuild/android-x64": "0.27.4", - "@esbuild/darwin-arm64": "0.27.4", - "@esbuild/darwin-x64": "0.27.4", - "@esbuild/freebsd-arm64": "0.27.4", - "@esbuild/freebsd-x64": "0.27.4", - "@esbuild/linux-arm": "0.27.4", - "@esbuild/linux-arm64": "0.27.4", - "@esbuild/linux-ia32": "0.27.4", - "@esbuild/linux-loong64": "0.27.4", - "@esbuild/linux-mips64el": "0.27.4", - "@esbuild/linux-ppc64": "0.27.4", - "@esbuild/linux-riscv64": "0.27.4", - "@esbuild/linux-s390x": "0.27.4", - "@esbuild/linux-x64": "0.27.4", - "@esbuild/netbsd-arm64": "0.27.4", - "@esbuild/netbsd-x64": "0.27.4", - "@esbuild/openbsd-arm64": "0.27.4", - "@esbuild/openbsd-x64": "0.27.4", - "@esbuild/openharmony-arm64": "0.27.4", - "@esbuild/sunos-x64": "0.27.4", - "@esbuild/win32-arm64": "0.27.4", - "@esbuild/win32-ia32": "0.27.4", - "@esbuild/win32-x64": "0.27.4" + "@esbuild/aix-ppc64": "0.28.0", + "@esbuild/android-arm": "0.28.0", + "@esbuild/android-arm64": "0.28.0", + "@esbuild/android-x64": "0.28.0", + "@esbuild/darwin-arm64": "0.28.0", + "@esbuild/darwin-x64": "0.28.0", + "@esbuild/freebsd-arm64": "0.28.0", + "@esbuild/freebsd-x64": "0.28.0", + "@esbuild/linux-arm": "0.28.0", + "@esbuild/linux-arm64": "0.28.0", + "@esbuild/linux-ia32": "0.28.0", + "@esbuild/linux-loong64": "0.28.0", + "@esbuild/linux-mips64el": "0.28.0", + "@esbuild/linux-ppc64": "0.28.0", + "@esbuild/linux-riscv64": "0.28.0", + "@esbuild/linux-s390x": "0.28.0", + "@esbuild/linux-x64": "0.28.0", + "@esbuild/netbsd-arm64": "0.28.0", + "@esbuild/netbsd-x64": "0.28.0", + "@esbuild/openbsd-arm64": "0.28.0", + "@esbuild/openbsd-x64": "0.28.0", + "@esbuild/openharmony-arm64": "0.28.0", + "@esbuild/sunos-x64": "0.28.0", + "@esbuild/win32-arm64": "0.28.0", + "@esbuild/win32-ia32": "0.28.0", + "@esbuild/win32-x64": "0.28.0" } }, "node_modules/escape-string-regexp": { @@ -1113,18 +1113,18 @@ } }, "node_modules/eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz", - "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.2.1.tgz", + "integrity": "sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", - "@eslint/config-array": "^0.23.3", - "@eslint/config-helpers": "^0.5.3", - "@eslint/core": "^1.1.1", - "@eslint/plugin-kit": "^0.6.1", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.5.5", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -1412,9 +1412,9 @@ } }, "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.5.0.tgz", + "integrity": "sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==", "dev": true, "license": "MIT", "engines": { @@ -1748,14 +1748,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -1791,9 +1791,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1805,16 +1805,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.57.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.2.tgz", - "integrity": "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.0.tgz", + "integrity": "sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.57.2", - "@typescript-eslint/parser": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2", - "@typescript-eslint/utils": "8.57.2" + "@typescript-eslint/eslint-plugin": "8.59.0", + "@typescript-eslint/parser": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1825,13 +1825,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index f1ed7f85d1..03e3a2f9c7 100644 --- a/package.json +++ b/package.json @@ -25,20 +25,20 @@ }, "engineStrict": true, "dependencies": { - "binaryen": "123.0.0-nightly.20250530", + "binaryen": "129.0.0-nightly.20260424", "long": "^5.2.4" }, "devDependencies": { "@eslint/js": "^10.0.1", - "@types/node": "^25.5.0", + "@types/node": "^25.6.0", "as-float": "^1.0.1", - "diff": "^8.0.4", - "esbuild": "^0.27.0", - "eslint": "^10.1.0", + "diff": "^9.0.0", + "esbuild": "^0.28.0", + "eslint": "^10.2.1", "glob": "^13.0.6", - "globals": "^17.4.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.57.2" + "globals": "^17.5.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.0" }, "type": "module", "exports": { @@ -74,7 +74,7 @@ "scripts": { "check": "npm run check:config && npm run check:import && npm run lint", "check:config": "tsc --noEmit -p src --diagnostics --listFiles", - "check:import": "tsc --noEmit --target ESNEXT --module nodenext --moduleResolution nodenext --experimentalDecorators tests/import/index", + "check:import": "tsc --noEmit --skipLibCheck --target ESNEXT --module nodenext --moduleResolution nodenext --experimentalDecorators tests/import/index", "lint": "eslint --max-warnings 0 --ext js . && eslint --max-warnings 0 --ext ts .", "build": "node scripts/build", "watch": "node scripts/build --watch", diff --git a/scripts/build-dts.js b/scripts/build-dts.js index 0493075824..979db546a9 100644 --- a/scripts/build-dts.js +++ b/scripts/build-dts.js @@ -319,9 +319,11 @@ const prefix = "types:assemblyscript"; export function generateSrc() { const stdout = []; + const pathToSources = pathUtil.resolve(__dirname, "..", "src"); generate({ - project: pathUtil.resolve(__dirname, "..", "src"), + project: pathToSources, + baseDir: pathToSources, prefix, exclude: [ "glue/**", diff --git a/src/common.ts b/src/common.ts index 3cc25a0845..f5336f0479 100644 --- a/src/common.ts +++ b/src/common.ts @@ -191,6 +191,7 @@ export namespace CommonNames { export const ASC_FEATURE_RELAXED_SIMD = "ASC_FEATURE_RELAXED_SIMD"; export const ASC_FEATURE_EXTENDED_CONST = "ASC_FEATURE_EXTENDED_CONST"; export const ASC_FEATURE_STRINGREF = "ASC_FEATURE_STRINGREF"; + export const ASC_FEATURE_SHARED_EVERYTHING = "ASC_FEATURE_SHARED_EVERYTHING"; export const ASC_VERSION_MAJOR = "ASC_VERSION_MAJOR"; export const ASC_VERSION_MINOR = "ASC_VERSION_MINOR"; export const ASC_VERSION_PATCH = "ASC_VERSION_PATCH"; diff --git a/src/compiler.ts b/src/compiler.ts index 7e4c3c9c40..87ec94adfb 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -325,8 +325,10 @@ export class Options { /** Sets whether a feature is enabled. */ setFeature(feature: Feature, on: bool = true): void { if (on) { + // Enabling Shared Everything also enables Threads and GC + if (feature & Feature.SharedEverything) feature |= Feature.Threads | Feature.GC; // Enabling Stringref also enables GC - if (feature & Feature.Stringref) feature |= Feature.GC; + if (feature & Feature.Strings) feature |= Feature.GC; // Enabling GC also enables Reference Types if (feature & Feature.GC) feature |= Feature.ReferenceTypes; // Enabling Relaxed SIMD also enables SIMD @@ -336,9 +338,11 @@ export class Options { // Disabling Reference Types also disables GC if (feature & Feature.ReferenceTypes) feature |= Feature.GC; // Disabling GC also disables Stringref - if (feature & Feature.GC) feature |= Feature.Stringref; + if (feature & Feature.GC) feature |= Feature.Strings; // Disabling SIMD also disables Relaxed SIMD if (feature & Feature.Simd) feature |= Feature.RelaxedSimd; + // Disabling Threads or GC also disables Shared Everything + if (feature & (Feature.Threads | Feature.GC)) feature |= Feature.SharedEverything; this.features &= ~feature; } } @@ -515,7 +519,8 @@ export class Compiler extends DiagnosticEmitter { if (options.hasFeature(Feature.Memory64)) featureFlags |= FeatureFlags.Memory64; if (options.hasFeature(Feature.RelaxedSimd)) featureFlags |= FeatureFlags.RelaxedSIMD; if (options.hasFeature(Feature.ExtendedConst)) featureFlags |= FeatureFlags.ExtendedConst; - if (options.hasFeature(Feature.Stringref)) featureFlags |= FeatureFlags.Stringref; + if (options.hasFeature(Feature.Strings)) featureFlags |= FeatureFlags.Strings; + if (options.hasFeature(Feature.SharedEverything)) featureFlags |= FeatureFlags.SharedEverything; module.setFeatures(featureFlags); // set up the main start function @@ -534,10 +539,16 @@ export class Compiler extends DiagnosticEmitter { let resolver = this.resolver; let hasShadowStack = options.stackSize > 0; // implies runtime=incremental + // Register a dummy memory so Binaryen's EffectAnalyzer can read + // memory.shared on loads/stores emitted during compilation. The real + // memory is installed by `initDefaultMemory` below, which can't run + // here: it needs `memoryOffset` (known only after data layout) and + // emits diagnostics / exports that must happen exactly once. + this.initDummyMemory(); + // initialize lookup maps, built-ins, imports, exports, etc. this.program.initialize(); - // Binaryen treats all function references as being leaked to the outside world when // the module isn't marked as closed-world (see WebAssembly/binaryen#7135). Therefore, // we should mark the module as closed-world when we're definitely sure it is. @@ -762,6 +773,19 @@ export class Compiler extends DiagnosticEmitter { return module; } + private initDummyMemory(): void { + let options = this.options; + this.module.setMemory( + 0, + Module.UNLIMITED_MEMORY, + [], + options.target, + null, + CommonNames.DefaultMemory, + options.sharedMemory + ); + } + private initDefaultMemory(memoryOffset: i64): void { this.memoryOffset = memoryOffset; @@ -1524,7 +1548,7 @@ export class Compiler extends DiagnosticEmitter { private ensureEnumToString(enumElement: Enum, reportNode: Node): string | null { if (enumElement.toStringFunctionName) return enumElement.toStringFunctionName; - + if (!this.compileEnum(enumElement)) return null; if (enumElement.is(CommonFlags.Const)) { this.errorRelated( @@ -2583,7 +2607,7 @@ export class Compiler extends DiagnosticEmitter { // (then │ │ (body) │ // (?block $continue │ │ if loops: (incrementor) ─────┘ // (body) │ │ recompile body? - // ) ├◄┘ + // ) ├◄┘ // (incrementor) ┌◄┘ // (br $loop) // ) @@ -2872,17 +2896,17 @@ export class Compiler extends DiagnosticEmitter { // Compile the condition (always executes) let condExpr = this.compileExpression(statement.condition, Type.auto); let condType = this.currentType; - + // Shortcut if there are no cases if (!numCases) return module.drop(condExpr); - + // Assign the condition to a temporary local as we compare it multiple times let outerFlow = this.currentFlow; let tempLocal = outerFlow.getTempLocal(condType); let tempLocalIndex = tempLocal.index; let breaks = new Array(1 + numCases); breaks[0] = module.local_set(tempLocalIndex, condExpr, condType.isManaged); - + // Make one br_if per labeled case and leave it to Binaryen to optimize the // sequence of br_ifs to a br_table according to optimization levels let breakIndex = 1; @@ -2894,7 +2918,7 @@ export class Compiler extends DiagnosticEmitter { defaultIndex = i; continue; } - + // Compile the equality expression for this case const left = statement.condition; const leftExpr = module.local_get(tempLocalIndex, condType.toRef()); @@ -2909,7 +2933,7 @@ export class Compiler extends DiagnosticEmitter { condType, statement ); - + // Add it to the list of breaks breaks[breakIndex++] = module.br(`case${i}|${label}`, equalityExpr); } @@ -3863,7 +3887,7 @@ export class Compiler extends DiagnosticEmitter { expression: BinaryExpression, contextualType: Type, ): ExpressionRef { - + const left = expression.left; const leftExpr = this.compileExpression(left, contextualType); const leftType = this.currentType; @@ -3881,9 +3905,9 @@ export class Compiler extends DiagnosticEmitter { ); } - /** + /** * compile `==` `===` `!=` `!==` BinaryExpression, from previously compiled left and right expressions. - * + * * This is split from `compileCommutativeCompareBinaryExpression` so that the logic can be reused * for switch cases in `compileSwitchStatement`, where the left expression only should be compiled once. */ @@ -3901,7 +3925,7 @@ export class Compiler extends DiagnosticEmitter { let module = this.module; let operatorString = operatorTokenToString(operator); - + // check operator overload const operatorKind = OperatorKind.fromBinaryToken(operator); const leftOverload = leftType.lookupOverload(operatorKind, this.program); @@ -3909,7 +3933,7 @@ export class Compiler extends DiagnosticEmitter { if (leftOverload && rightOverload && leftOverload != rightOverload) { this.error( DiagnosticCode.Ambiguous_operator_overload_0_conflicting_overloads_1_and_2, - reportNode.range, + reportNode.range, operatorString, leftOverload.internalName, rightOverload.internalName @@ -3999,7 +4023,7 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpression(left, contextualType); leftType = this.currentType; - + // check operator overload const operatorKind = OperatorKind.fromBinaryToken(operator); const leftOverload = leftType.lookupOverload(operatorKind, this.program); @@ -4070,7 +4094,7 @@ export class Compiler extends DiagnosticEmitter { return this.compileNonCommutativeCompareBinaryExpression(expression, contextualType); } case Token.Equals_Equals_Equals: - case Token.Equals_Equals: + case Token.Equals_Equals: case Token.Exclamation_Equals_Equals: case Token.Exclamation_Equals: { return this.compileCommutativeCompareBinaryExpression(expression, contextualType); @@ -6352,13 +6376,13 @@ export class Compiler extends DiagnosticEmitter { if (numArguments < numParams) { return argumentExpressions; } - + // make an array literal expression from the rest args let elements = argumentExpressions.slice(numParams - 1); let range = new Range(elements[0].range.start, elements[elements.length - 1].range.end); range.source = reportNode.range.source; let arrExpr = new ArrayLiteralExpression(elements, range); - + // return the original args, but replace the rest args with the array const exprs = argumentExpressions.slice(0, numParams - 1); exprs.push(arrExpr); @@ -6622,9 +6646,9 @@ export class Compiler extends DiagnosticEmitter { let initializer = declaration.initializer; let initExpr: ExpressionRef; if (declaration.parameterKind === ParameterKind.Rest) { - const arrExpr = new ArrayLiteralExpression([], declaration.range.atEnd); + const arrExpr = new ArrayLiteralExpression([], declaration.range.atEnd); initExpr = this.compileArrayLiteral(arrExpr, type, Constraints.ConvExplicit); - initExpr = module.local_set(operandIndex, initExpr, type.isManaged); + initExpr = module.local_set(operandIndex, initExpr, type.isManaged); } else if (initializer) { initExpr = this.compileExpression( initializer, @@ -7869,7 +7893,7 @@ export class Compiler extends DiagnosticEmitter { stmts.length = 1; stmts.push( module.i32(1) - ); + ); module.removeFunction(name); module.addFunction(name, sizeType, TypeRef.I32, [ TypeRef.I32 ], module.block(null, stmts, TypeRef.I32)); } diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index fdc2bd7492..347428aa8b 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -18,6 +18,7 @@ export type Op = i32; export type ExternalKind = u32; export type SideEffects = u32; export type ExpressionRunnerFlags = u32; +export type MemoryOrder = u32; export type StringRef = Ref; export type Pointer = Ref; @@ -95,12 +96,12 @@ export declare function _BinaryenModuleDispose(module: ModuleRef): void; export declare function _BinaryenSizeofLiteral(): usize; export declare function _BinaryenLiteralInt32(literalOut: LiteralRef, x: i32): void; -export declare function _BinaryenLiteralInt64(literalOut: LiteralRef, x: i32, y: i32): void; +export declare function _BinaryenLiteralInt64(literalOut: LiteralRef, value: i64): void; export declare function _BinaryenLiteralFloat32(literalOut: LiteralRef, x: f32): void; export declare function _BinaryenLiteralFloat64(literalOut: LiteralRef, x: f64): void; export declare function _BinaryenLiteralVec128(literalOut: LiteralRef, x: ArrayRef): void; export declare function _BinaryenLiteralFloat32Bits(literalOut: LiteralRef, x: i32): void; -export declare function _BinaryenLiteralFloat64Bits(literalOut: LiteralRef, x: i32, y: i32): void; +export declare function _BinaryenLiteralFloat64Bits(literalOut: LiteralRef, value: i64): void; export declare function _BinaryenExpressionGetId(expr: ExpressionRef): ExpressionId; export declare function _BinaryenExpressionGetType(expr: ExpressionRef): TypeRef; @@ -228,7 +229,7 @@ export declare function _BinaryenLoadSetAlign(expr: ExpressionRef, align: u32): export declare function _BinaryenLoadGetPtr(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenLoadSetPtr(expr: ExpressionRef, ptrExpr: ExpressionRef): void; // ^ with atomic = true -export declare function _BinaryenAtomicLoad(module: ModuleRef, bytes: Index, offset: Index, type: TypeRef, ptrExpr: ExpressionRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicLoad(module: ModuleRef, bytes: Index, offset: Index, type: TypeRef, ptrExpr: ExpressionRef, memoryName: StringRef, memoryOrder: MemoryOrder): ExpressionRef; export declare function _BinaryenStore(module: ModuleRef, bytes: u32, offset: u32, align: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; export declare function _BinaryenStoreIsAtomic(expr: ExpressionRef): bool; @@ -246,15 +247,13 @@ export declare function _BinaryenStoreSetValue(expr: ExpressionRef, valueExpr: E export declare function _BinaryenStoreGetValueType(expr: ExpressionRef): TypeRef; export declare function _BinaryenStoreSetValueType(expr: ExpressionRef, valueType: TypeRef): void; // ^ with atomic = true -export declare function _BinaryenAtomicStore(module: ModuleRef, bytes: Index, offset: Index, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicStore(module: ModuleRef, bytes: Index, offset: Index, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: MemoryOrder): ExpressionRef; export declare function _BinaryenConst(module: ModuleRef, value: LiteralRef): ExpressionRef; export declare function _BinaryenConstGetValueI32(expr: ExpressionRef): i32; export declare function _BinaryenConstSetValueI32(expr: ExpressionRef, value: i32): void; -export declare function _BinaryenConstGetValueI64Low(expr: ExpressionRef): i32; -export declare function _BinaryenConstSetValueI64Low(expr: ExpressionRef, value: i32): void; -export declare function _BinaryenConstGetValueI64High(expr: ExpressionRef): i32; -export declare function _BinaryenConstSetValueI64High(expr: ExpressionRef, value: i32): void; +export declare function _BinaryenConstGetValueI64(expr: ExpressionRef): i64; +export declare function _BinaryenConstSetValueI64(expr: ExpressionRef, value: i64): void; export declare function _BinaryenConstGetValueF32(expr: ExpressionRef): f32; export declare function _BinaryenConstSetValueF32(expr: ExpressionRef, value: f32): void; export declare function _BinaryenConstGetValueF64(expr: ExpressionRef): f64; @@ -296,7 +295,7 @@ export declare function _BinaryenNop(module: ModuleRef): ExpressionRef; export declare function _BinaryenUnreachable(module: ModuleRef): ExpressionRef; -export declare function _BinaryenAtomicRMW(module: ModuleRef, op: Op, bytes: u32, offset: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicRMW(module: ModuleRef, op: Op, bytes: u32, offset: u32, ptrExpr: ExpressionRef, valueExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: MemoryOrder): ExpressionRef; export declare function _BinaryenAtomicRMWGetOp(expr: ExpressionRef): Op; export declare function _BinaryenAtomicRMWSetOp(expr: ExpressionRef, op: Op): void; export declare function _BinaryenAtomicRMWGetBytes(expr: ExpressionRef): u32; @@ -308,7 +307,7 @@ export declare function _BinaryenAtomicRMWSetPtr(expr: ExpressionRef, ptrExpr: E export declare function _BinaryenAtomicRMWGetValue(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenAtomicRMWSetValue(expr: ExpressionRef, valueExpr: ExpressionRef): void; -export declare function _BinaryenAtomicCmpxchg(module: ModuleRef, bytes: u32, offset: u32, ptrExpr: ExpressionRef, expectedExpr: ExpressionRef, replacementExpr: ExpressionRef, type: TypeRef, memoryName: StringRef): ExpressionRef; +export declare function _BinaryenAtomicCmpxchg(module: ModuleRef, bytes: u32, offset: u32, ptrExpr: ExpressionRef, expectedExpr: ExpressionRef, replacementExpr: ExpressionRef, type: TypeRef, memoryName: StringRef, memoryOrder: MemoryOrder): ExpressionRef; export declare function _BinaryenAtomicCmpxchgGetBytes(expr: ExpressionRef): u32; export declare function _BinaryenAtomicCmpxchgSetBytes(expr: ExpressionRef, bytes: u32): void; export declare function _BinaryenAtomicCmpxchgGetOffset(expr: ExpressionRef): u32; diff --git a/src/glue/binaryen.js b/src/glue/binaryen.js index 295afb7635..4caf71afbb 100644 --- a/src/glue/binaryen.js +++ b/src/glue/binaryen.js @@ -4,6 +4,7 @@ */ import binaryen from "../../lib/binaryen.js"; +import Long from "long"; export const { _BinaryenTypeCreate, @@ -60,12 +61,10 @@ export const { _BinaryenSizeofLiteral, _BinaryenLiteralInt32, - _BinaryenLiteralInt64, _BinaryenLiteralFloat32, _BinaryenLiteralFloat64, _BinaryenLiteralVec128, _BinaryenLiteralFloat32Bits, - _BinaryenLiteralFloat64Bits, _BinaryenExpressionGetId, _BinaryenExpressionGetType, @@ -211,10 +210,6 @@ export const { _BinaryenConst, _BinaryenConstGetValueI32, _BinaryenConstSetValueI32, - _BinaryenConstGetValueI64Low, - _BinaryenConstSetValueI64Low, - _BinaryenConstGetValueI64High, - _BinaryenConstSetValueI64High, _BinaryenConstGetValueF32, _BinaryenConstSetValueF32, _BinaryenConstGetValueF64, @@ -918,4 +913,32 @@ export const { } = binaryen; +// Shims for C-API functions whose Emscripten binding now uses BigInt for i64 +// parameters (built with -sWASM_BIGINT). In portable/JS mode AssemblyScript +// represents i64 as Long, so we convert between Long and BigInt here. + +function toBigInt(long) { + return (BigInt(long.high | 0) << 32n) | BigInt(long.low >>> 0); +} + +function toLong(bign) { + return Long.fromBits(Number(bign & 0xFFFFFFFFn) | 0, Number(bign >> 32n) | 0); +} + +export function _BinaryenLiteralInt64(lit, val) { + return binaryen._BinaryenLiteralInt64(lit, toBigInt(val)); +} + +export function _BinaryenLiteralFloat64Bits(lit, val) { + return binaryen._BinaryenLiteralFloat64Bits(lit, toBigInt(val)); +} + +export function _BinaryenConstGetValueI64(expr) { + return toLong(binaryen._BinaryenConstGetValueI64(expr)); +} + +export function _BinaryenConstSetValueI64(expr, val) { + binaryen._BinaryenConstSetValueI64(expr, toBigInt(val)); +} + export default binaryen; diff --git a/src/index-wasm.ts b/src/index-wasm.ts index ec51de73da..b448aa0ae4 100644 --- a/src/index-wasm.ts +++ b/src/index-wasm.ts @@ -201,7 +201,9 @@ export const FEATURE_RELAXED_SIMD = Feature.RelaxedSimd; /** Extended const expressions. */ export const FEATURE_EXTENDED_CONST = Feature.ExtendedConst; /** String references. */ -export const FEATURE_STRINGREF = Feature.Stringref; +export const FEATURE_STRINGREF = Feature.Strings; +/** Shared-everything threads. */ +export const FEATURE_SHARED_EVERYTHING = Feature.SharedEverything; /** All features. */ export const FEATURES_ALL = Feature.All; /** Default features. */ diff --git a/src/module.ts b/src/module.ts index 2719f60c50..79efc7896e 100644 --- a/src/module.ts +++ b/src/module.ts @@ -210,14 +210,18 @@ export const enum FeatureFlags { Memory64 = 2048 /* _BinaryenFeatureMemory64 */, RelaxedSIMD = 4096 /* _BinaryenFeatureRelaxedSIMD */, ExtendedConst = 8192 /* _BinaryenFeatureExtendedConst */, - Stringref = 16384 /* _BinaryenFeatureStrings */, + Strings = 16384 /* _BinaryenFeatureStrings */, MultiMemory = 32768 /* _BinaryenFeatureMultiMemory */, StackSwitching = 65536 /* _BinaryenFeatureStackSwitching */, SharedEverything = 131072 /* _BinaryenFeatureSharedEverything */, FP16 = 262144 /* _BinaryenFeatureFP16 */, BulkMemoryOpt = 524288 /* _BinaryenFeatureBulkMemoryOpt */, CallIndirectOverlong = 1048576 /* _BinaryenFeatureCallIndirectOverlong */, - All = 4194303 /* _BinaryenFeatureAll */ + RelaxedAtomics = 4194304 /* _BinaryenFeatureRelaxedAtomics */, + CustomPageSizes = 8388608 /* _BinaryenFeatureCustomPageSizes */, + Multibyte = 16777216 /* _BinaryenFeatureMultibyte */, + WideArithmetic = 33554432 /* _BinaryenFeatureWideArithmetic */, + All = 67108863 /* _BinaryenFeatureAll */ } /** Binaryen expression id constants. See wasm-delegations.def in Binaryen. */ @@ -251,74 +255,83 @@ export const enum ExpressionId { AtomicWait = 26 /* _BinaryenAtomicWaitId */, AtomicNotify = 27 /* _BinaryenAtomicNotifyId */, AtomicFence = 28 /* _BinaryenAtomicFenceId */, - SIMDExtract = 29 /* _BinaryenSIMDExtractId */, - SIMDReplace = 30 /* _BinaryenSIMDReplaceId */, - SIMDShuffle = 31 /* _BinaryenSIMDShuffleId */, - SIMDTernary = 32 /* _BinaryenSIMDTernaryId */, - SIMDShift = 33 /* _BinaryenSIMDShiftId */, - SIMDLoad = 34 /* _BinaryenSIMDLoadId */, - SIMDLoadStoreLane = 35 /* _BinaryenSIMDLoadStoreLaneId */, - MemoryInit = 36 /* _BinaryenMemoryInitId */, - DataDrop = 37 /* _BinaryenDataDropId */, - MemoryCopy = 38 /* _BinaryenMemoryCopyId */, - MemoryFill = 39 /* _BinaryenMemoryFillId */, - Pop = 40 /* _BinaryenPopId */, - RefNull = 41 /* _BinaryenRefNullId */, - RefIsNull = 42 /* _BinaryenRefIsNullId */, - RefFunc = 43 /* _BinaryenRefFuncId */, - RefEq = 44 /* _BinaryenRefEqId */, - TableGet = 45 /* _BinaryenTableGetId */, - TableSet = 46 /* _BinaryenTableSetId */, - TableSize = 47 /* _BinaryenTableSizeId */, - TableGrow = 48 /* _BinaryenTableGrowId */, - TableFill = 49 /* _BinaryenTableFillId */, - TableCopy = 50 /* _BinaryenTableCopyId */, - TableInit = 51 /* _BinaryenTableInitId */, - Try = 52 /* _BinaryenTryId */, - TryTable = 53 /* _BinaryenTryTableId */, - Throw = 54 /* _BinaryenThrowId */, - Rethrow = 55 /* _BinaryenRethrowId */, - ThrowRef = 56 /* _BinaryenThrowRefId */, - TupleMake = 57 /* _BinaryenTupleMakeId */, - TupleExtract = 58 /* _BinaryenTupleExtractId */, - RefI31 = 59 /* _BinaryenRefI31Id */, - I31Get = 60 /* _BinaryenI31GetId */, - CallRef = 61 /* _BinaryenCallRefId */, - RefTest = 62 /* _BinaryenRefTestId */, - RefCast = 63 /* _BinaryenRefCastId */, - RefGetDesc = 64 /* _BinaryenRefGetDescId */, - BrOn = 65 /* _BinaryenBrOnId */, - StructNew = 66 /* _BinaryenStructNewId */, - StructGet = 67 /* _BinaryenStructGetId */, - StructSet = 68 /* _BinaryenStructSetId */, - StructRMW = 69 /* _BinaryenStructRMWId */, - StructCmpxchg = 70 /* _BinaryenStructCmpxchgId */, - ArrayNew = 71 /* _BinaryenArrayNewId */, - ArrayNewData = 72 /* _BinaryenArrayNewDataId */, - ArrayNewElem = 73 /* _BinaryenArrayNewElemId */, - ArrayNewFixed = 74 /* _BinaryenArrayNewFixedId */, - ArrayGet = 75 /* _BinaryenArrayGetId */, - ArraySet = 76 /* _BinaryenArraySetId */, - ArrayLen = 77 /* _BinaryenArrayLenId */, - ArrayCopy = 78 /* _BinaryenArrayCopyId */, - ArrayFill = 79 /* _BinaryenArrayFillId */, - ArrayInitData = 80 /* _BinaryenArrayInitDataId */, - ArrayInitElem = 81 /* _BinaryenArrayInitElemId */, - RefAs = 82 /* _BinaryenRefAsId */, - StringNew = 83 /* _BinaryenStringNewId */, - StringConst = 84 /* _BinaryenStringConstId */, - StringMeasure = 85 /* _BinaryenStringMeasureId */, - StringEncode = 86 /* _BinaryenStringEncodeId */, - StringConcat = 87 /* _BinaryenStringConcatId */, - StringEq = 88 /* _BinaryenStringEqId */, - StringWTF16Get = 89 /* _BinaryenStringWTF16GetId */, - StringSliceWTF = 90 /* _BinaryenStringSliceWTFId */, - ContNew = 91 /* _BinaryenContNewId */, - ContBind = 92 /* _BinaryenContBindId */, - Suspend = 93 /* _BinaryenSuspendId */, - Resume = 94 /* _BinaryenResumeId */, - ResumeThrow = 95 /* _BinaryenResumeThrowId */, - StackSwitch = 96 /* _BinaryenStackSwitchId */ + Pause = 29 /* _BinaryenPauseId */, + SIMDExtract = 30 /* _BinaryenSIMDExtractId */, + SIMDReplace = 31 /* _BinaryenSIMDReplaceId */, + SIMDShuffle = 32 /* _BinaryenSIMDShuffleId */, + SIMDTernary = 33 /* _BinaryenSIMDTernaryId */, + SIMDShift = 34 /* _BinaryenSIMDShiftId */, + SIMDLoad = 35 /* _BinaryenSIMDLoadId */, + SIMDLoadStoreLane = 36 /* _BinaryenSIMDLoadStoreLaneId */, + MemoryInit = 37 /* _BinaryenMemoryInitId */, + DataDrop = 38 /* _BinaryenDataDropId */, + MemoryCopy = 39 /* _BinaryenMemoryCopyId */, + MemoryFill = 40 /* _BinaryenMemoryFillId */, + Pop = 41 /* _BinaryenPopId */, + RefNull = 42 /* _BinaryenRefNullId */, + RefIsNull = 43 /* _BinaryenRefIsNullId */, + RefFunc = 44 /* _BinaryenRefFuncId */, + RefEq = 45 /* _BinaryenRefEqId */, + TableGet = 46 /* _BinaryenTableGetId */, + TableSet = 47 /* _BinaryenTableSetId */, + TableSize = 48 /* _BinaryenTableSizeId */, + TableGrow = 49 /* _BinaryenTableGrowId */, + TableFill = 50 /* _BinaryenTableFillId */, + TableCopy = 51 /* _BinaryenTableCopyId */, + TableInit = 52 /* _BinaryenTableInitId */, + ElemDrop = 53 /* _BinaryenElemDropId */, + Try = 54 /* _BinaryenTryId */, + TryTable = 55 /* _BinaryenTryTableId */, + Throw = 56 /* _BinaryenThrowId */, + Rethrow = 57 /* _BinaryenRethrowId */, + ThrowRef = 58 /* _BinaryenThrowRefId */, + TupleMake = 59 /* _BinaryenTupleMakeId */, + TupleExtract = 60 /* _BinaryenTupleExtractId */, + RefI31 = 61 /* _BinaryenRefI31Id */, + I31Get = 62 /* _BinaryenI31GetId */, + CallRef = 63 /* _BinaryenCallRefId */, + RefTest = 64 /* _BinaryenRefTestId */, + RefCast = 65 /* _BinaryenRefCastId */, + RefGetDesc = 66 /* _BinaryenRefGetDescId */, + BrOn = 67 /* _BinaryenBrOnId */, + StructNew = 68 /* _BinaryenStructNewId */, + StructGet = 69 /* _BinaryenStructGetId */, + StructSet = 70 /* _BinaryenStructSetId */, + StructRMW = 71 /* _BinaryenStructRMWId */, + StructCmpxchg = 72 /* _BinaryenStructCmpxchgId */, + ArrayNew = 73 /* _BinaryenArrayNewId */, + ArrayNewData = 74 /* _BinaryenArrayNewDataId */, + ArrayNewElem = 75 /* _BinaryenArrayNewElemId */, + ArrayNewFixed = 76 /* _BinaryenArrayNewFixedId */, + ArrayGet = 77 /* _BinaryenArrayGetId */, + ArraySet = 78 /* _BinaryenArraySetId */, + ArrayLoad = 79 /* _BinaryenArrayLoadId */, + ArrayStore = 80 /* _BinaryenArrayStoreId */, + ArrayLen = 81 /* _BinaryenArrayLenId */, + ArrayCopy = 82 /* _BinaryenArrayCopyId */, + ArrayFill = 83 /* _BinaryenArrayFillId */, + ArrayInitData = 84 /* _BinaryenArrayInitDataId */, + ArrayInitElem = 85 /* _BinaryenArrayInitElemId */, + ArrayRMW = 86 /* _BinaryenArrayRMWId */, + ArrayCmpxchg = 87 /* _BinaryenArrayCmpxchgId */, + RefAs = 88 /* _BinaryenRefAsId */, + StringNew = 89 /* _BinaryenStringNewId */, + StringConst = 90 /* _BinaryenStringConstId */, + StringMeasure = 91 /* _BinaryenStringMeasureId */, + StringEncode = 92 /* _BinaryenStringEncodeId */, + StringConcat = 93 /* _BinaryenStringConcatId */, + StringEq = 94 /* _BinaryenStringEqId */, + StringTest = 95 /* _BinaryenStringTestId */, + StringWTF16Get = 96 /* _BinaryenStringWTF16GetId */, + StringSliceWTF = 97 /* _BinaryenStringSliceWTFId */, + ContNew = 98 /* _BinaryenContNewId */, + ContBind = 99 /* _BinaryenContBindId */, + Suspend = 100 /* _BinaryenSuspendId */, + Resume = 101 /* _BinaryenResumeId */, + ResumeThrow = 102 /* _BinaryenResumeThrowId */, + StackSwitch = 103 /* _BinaryenStackSwitchId */, + StructWait = 104 /* _BinaryenStructWaitId */, + StructNotify = 105 /* _BinaryenStructNotifyId */ } /** Binaryen external kind constants. */ @@ -330,6 +343,16 @@ export const enum ExternalKind { Tag = 4 /* _BinaryenExternalTag */ } +/** Binaryen memory order constants for atomic operations. */ +export const enum MemoryOrder { + /** Non-atomic access. */ + Unordered = 0 /* _BinaryenMemoryOrderUnordered */, + /** Sequentially consistent atomic memory operation. */ + SeqCst = 1 /* _BinaryenMemoryOrderSeqCst */, + /** Acquire/Release atomic memory operation; acquire for loads, release for stores. */ + AcqRel = 2 /* _BinaryenMemoryOrderAcqRel */ +} + /** Binaryen unary operation constants. */ export const enum UnaryOp { /** i32.clz */ @@ -511,7 +534,7 @@ export const enum UnaryOp { AllTrueI64x2 = 83 /* _BinaryenAllTrueVecI64x2 */, /** i64x2.bitmask */ BitmaskI64x2 = 84 /* _BinaryenBitmaskVecI64x2 */, - // FIXME FIXME FIXME DONT FORGET TODO: F16 (not in C API yet) + // FIXME: f16x8 abs/neg/sqrt/ceil/floor/trunc/nearest (85..91) are in wasm.h but not yet exported via C API /** f32x4.abs */ AbsF32x4 = 92 /* _BinaryenAbsVecF32x4 */, /** f32x4.neg */ @@ -600,8 +623,15 @@ export const enum UnaryOp { RelaxedTruncF64x2ToI32x4Zero = 134 /* _BinaryenRelaxedTruncZeroSVecF64x2ToVecI32x4 */, /** i32x4.relaxed_trunc_f64x2_u_zero */ RelaxedTruncF64x2ToU32x4Zero = 135 /* _BinaryenRelaxedTruncZeroUVecF64x2ToVecI32x4 */, + // FIXME: f16x8 splat/trunc_sat/convert (136..140) are in wasm.h but not yet exported via C API + /** f32x4.promote_low_f16x8 */ + PromoteLowF16x8ToF32x4 = 141 /* _BinaryenPromoteLowVecF16x8ToVecF32x4 */, + /** f16x8.demote_f32x4_zero */ + // DemoteZeroF32x4ToF16x8 = 142 /* TODO_BinaryenDemoteZeroVecF32x4ToVecF16x8 */, + /** f16x8.demote_f64x2_zero */ + // DemoteZeroF64x2ToF16x8 = 143 /* TODO_BinaryeDemoteZeroVecF64x2ToVecF16x8 */, - _last = RelaxedTruncF64x2ToU32x4Zero, + _last = PromoteLowF16x8ToF32x4, // Target dependent @@ -844,6 +874,7 @@ export const enum BinaryOp { LeI64x2 = 110 /* _BinaryenLeSVecI64x2 */, /** i64x2.ge_s */ GeI64x2 = 111 /* _BinaryenGeSVecI64x2 */, + // FIXME: f16x8 compare ops (eq/ne/lt/gt/le/ge = 112..117) are in wasm.h but not yet exported via C API /** f32x4.eq */ EqF32x4 = 118 /* _BinaryenEqVecF32x4 */, /** f32x4.ne */ @@ -970,6 +1001,7 @@ export const enum BinaryOp { ExtmulLowU64x2 = 179 /* _BinaryenExtMulLowUVecI64x2 */, /** i64x2.extmul_high_i32x4_u */ ExtmulHighU64x2 = 180 /* _BinaryenExtMulHighUVecI64x2 */, + // FIXME: f16x8 arithmetic ops (add/sub/mul/div/min/max/pmin/pmax = 181..188) are in wasm.h but not yet exported via C API /** f32x4.add */ AddF32x4 = 189 /* _BinaryenAddVecF32x4 */, /** f32x4.sub */ @@ -1109,13 +1141,14 @@ export const enum SIMDExtractOp { ExtractLaneI16x8 = 2 /* _BinaryenExtractLaneSVecI16x8 */, /** i16x8.extract_lane_u */ ExtractLaneU16x8 = 3 /* _BinaryenExtractLaneUVecI16x8 */, - /** i32x4.extract_lane_s */ + /** i32x4.extract_lane */ ExtractLaneI32x4 = 4 /* _BinaryenExtractLaneVecI32x4 */, - /** i32x4.extract_lane_u */ + /** i64x2.extract_lane */ ExtractLaneI64x2 = 5 /* _BinaryenExtractLaneVecI64x2 */, - /** i64x2.extract_lane_s */ + // FIXME: f16x8.extract_lane (= 6) is in wasm.h but not yet exported via C API + /** f32x4.extract_lane */ ExtractLaneF32x4 = 7 /* _BinaryenExtractLaneVecF32x4 */, - /** i64x2.extract_lane_u */ + /** f64x2.extract_lane */ ExtractLaneF64x2 = 8 /* _BinaryenExtractLaneVecF64x2 */, } @@ -1129,6 +1162,7 @@ export const enum SIMDReplaceOp { ReplaceLaneI32x4 = 2 /* _BinaryenReplaceLaneVecI32x4 */, /** i64x2.replace_lane */ ReplaceLaneI64x2 = 3 /* _BinaryenReplaceLaneVecI64x2 */, + // FIXME: f16x8.replace_lane (= 4) is in wasm.h but not yet exported via C API /** f32x4.replace_lane */ ReplaceLaneF32x4 = 5 /* _BinaryenReplaceLaneVecF32x4 */, /** f64x2.replace_lane */ @@ -1215,31 +1249,25 @@ export const enum SIMDLoadStoreLaneOp { export const enum SIMDTernaryOp { /** v128.bitselect */ Bitselect = 0 /* _BinaryenBitselectVec128 */, - - // Relaxed SIMD for F16 - /** f16x8.relaxed_madd */ - RelaxedMaddVecF16x8 = 1 /* TODO_BinaryenRelaxedMaddVecF16x8 */, - /** f16x8.relaxed_nmadd */ - RelaxedNmaddVecF16x8 = 2 /* TODO_BinaryenRelaxedNmaddVecF16x8 */, - /** f32x4.relaxed_madd */ - RelaxedMaddF32x4 = 3 /* _BinaryenRelaxedMaddVecF32x4 */, + RelaxedMaddF32x4 = 1 /* _BinaryenRelaxedMaddVecF32x4 */, /** f32x4.relaxed_nmadd */ - RelaxedNmaddF32x4 = 4 /* _BinaryenRelaxedNmaddVecF32x4 */, + RelaxedNmaddF32x4 = 2 /* _BinaryenRelaxedNmaddVecF32x4 */, /** f64x2.relaxed_madd */ - RelaxedMaddF64x2 = 5 /* _BinaryenRelaxedMaddVecF64x2 */, + RelaxedMaddF64x2 = 3 /* _BinaryenRelaxedMaddVecF64x2 */, /** f64x2.relaxed_nmadd */ - RelaxedNmaddF64x2 = 6 /* _BinaryenRelaxedNmaddVecF64x2 */, + RelaxedNmaddF64x2 = 4 /* _BinaryenRelaxedNmaddVecF64x2 */, /** i8x16.relaxed_laneselect */ - RelaxedLaneselectI8x16 = 7 /* _BinaryenLaneselectI8x16 */, + RelaxedLaneselectI8x16 = 5 /* _BinaryenLaneselectI8x16 */, /** i16x8.relaxed_laneselect */ - RelaxedLaneselectI16x8 = 8 /* _BinaryenLaneselectI16x8 */, + RelaxedLaneselectI16x8 = 6 /* _BinaryenLaneselectI16x8 */, /** i32x4.relaxed_laneselect */ - RelaxedLaneselectI32x4 = 9 /* _BinaryenLaneselectI32x4 */, + RelaxedLaneselectI32x4 = 7 /* _BinaryenLaneselectI32x4 */, /** i64x2.relaxed_laneselect */ - RelaxedLaneselectI64x2 = 10 /* _BinaryenLaneselectI64x2 */, + RelaxedLaneselectI64x2 = 8 /* _BinaryenLaneselectI64x2 */, /** i32x4.relaxed_dot_i8x16_i7x16_add_s */ - RelaxedDotI8x16I7x16AddToI32x4 = 11 /* _BinaryenDotI8x16I7x16AddSToVecI32x4 */, + RelaxedDotI8x16I7x16AddToI32x4 = 9 /* _BinaryenDotI8x16I7x16AddSToVecI32x4 */, + // FIXME: f16x8 madd/nmadd (= 10, 11) are in wasm.h but not yet exported via C API } /** Binaryen RefAs operation constants. */ @@ -1349,7 +1377,7 @@ export class Module { i64(valueLow: i32, valueHigh: i32 = 0): ExpressionRef { let out = this.lit; - binaryen._BinaryenLiteralInt64(out, valueLow, valueHigh); + binaryen._BinaryenLiteralInt64(out, i64_new(valueLow, valueHigh)); return binaryen._BinaryenConst(this.ref, out); } @@ -1580,10 +1608,11 @@ export class Module { ptr: ExpressionRef, type: TypeRef, offset: Index = 0, - name: string = CommonNames.DefaultMemory + name: string = CommonNames.DefaultMemory, + order: MemoryOrder = MemoryOrder.SeqCst ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr, cStr); + return binaryen._BinaryenAtomicLoad(this.ref, bytes, offset, type, ptr, cStr, order); } atomic_store( @@ -1592,10 +1621,11 @@ export class Module { value: ExpressionRef, type: TypeRef, offset: Index = 0, - name: string = CommonNames.DefaultMemory + name: string = CommonNames.DefaultMemory, + order: MemoryOrder = MemoryOrder.SeqCst ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type, cStr); + return binaryen._BinaryenAtomicStore(this.ref, bytes, offset, ptr, value, type, cStr, order); } atomic_rmw( @@ -1605,10 +1635,11 @@ export class Module { ptr: ExpressionRef, value: ExpressionRef, type: TypeRef, - name: string = CommonNames.DefaultMemory + name: string = CommonNames.DefaultMemory, + order: MemoryOrder = MemoryOrder.SeqCst ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type, cStr); + return binaryen._BinaryenAtomicRMW(this.ref, op, bytes, offset, ptr, value, type, cStr, order); } atomic_cmpxchg( @@ -1618,10 +1649,11 @@ export class Module { expected: ExpressionRef, replacement: ExpressionRef, type: TypeRef, - name: string = CommonNames.DefaultMemory + name: string = CommonNames.DefaultMemory, + order: MemoryOrder = MemoryOrder.SeqCst ): ExpressionRef { let cStr = this.allocStringCached(name); - return binaryen._BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type, cStr); + return binaryen._BinaryenAtomicCmpxchg(this.ref, bytes, offset, ptr, expected, replacement, type, cStr, order); } atomic_wait( @@ -2471,6 +2503,14 @@ export class Module { binaryen._BinaryenSetDebugInfo(on); } + getTrapsNeverHappen(): bool { + return binaryen._BinaryenGetTrapsNeverHappen(); + } + + setTrapsNeverHappen(on: bool): void { + binaryen._BinaryenSetTrapsNeverHappen(on); + } + getClosedWorld(): bool { return binaryen._BinaryenGetClosedWorld(); } @@ -2567,6 +2607,10 @@ export class Module { binaryen._BinaryenSetAllowInliningFunctionsWithLoops(enabled); } + setPartialInliningIfs(value: i32): void { + this.setPassArgument("partial-inlining-ifs", value.toString()); + } + // meta (module) getFeatures(): FeatureFlags { @@ -2603,12 +2647,13 @@ export class Module { // Implicitly run costly non-LLVM optimizations on -O3 or -Oz if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4; + this.clearPassArguments(); + this.setOptimizeLevel(optimizeLevel); this.setShrinkLevel(shrinkLevel); this.setDebugInfo(debugInfo); this.setZeroFilledMemory(zeroFilledMemory); this.setFastMath(true); - this.clearPassArguments(); // OptimizationOptions#parse in src/tools/optimization-options.h const stackIR = optimizeLevel >= 2 || shrinkLevel >= 1; @@ -2620,7 +2665,7 @@ export class Module { this.setAlwaysInlineMaxSize(12); this.setFlexibleInlineMaxSize(70); this.setOneCallerInlineMaxSize(200); - this.setAllowInliningFunctionsWithLoops(optimizeLevel >= 3); + this.setAllowInliningFunctionsWithLoops(true); } else { this.setAlwaysInlineMaxSize( optimizeLevel <= 1 || shrinkLevel >= 2 @@ -2631,6 +2676,7 @@ export class Module { this.setOneCallerInlineMaxSize(80); this.setAllowInliningFunctionsWithLoops(false); } + this.setPartialInliningIfs(optimizeLevel >= 2 ? 4 : 0); // Pass order here differs substantially from Binaryen's defaults // see: Binaryen/src/pass.cpp @@ -2641,12 +2687,15 @@ export class Module { passes.push("duplicate-function-elimination"); passes.push("remove-unused-module-elements"); // + - - // --- PassRunner::addDefaultFunctionOptimizationPasses --- if (optimizeLevel >= 2) { passes.push("once-reduction"); + } + + // --- PassRunner::addDefaultFunctionOptimizationPasses --- + if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("inlining"); passes.push("simplify-globals-optimizing"); + passes.push("generate-global-effects"); } if (optimizeLevel >= 3 || shrinkLevel >= 1) { passes.push("rse"); @@ -2659,7 +2708,6 @@ export class Module { passes.push("merge-blocks"); passes.push("precompute-propagate"); passes.push("simplify-globals-optimizing"); - passes.push("gufa-optimizing"); passes.push("dae-optimizing"); } if (optimizeLevel >= 3) { @@ -2668,20 +2716,31 @@ export class Module { passes.push("vacuum"); passes.push("simplify-locals-notee-nostructure"); passes.push("vacuum"); + passes.push("local-cse"); passes.push("licm"); passes.push("merge-locals"); passes.push("reorder-locals"); } passes.push("optimize-instructions"); - if (optimizeLevel >= 3 || shrinkLevel >= 1) { - passes.push("dce"); + if (optimizeLevel >= 2) { + passes.push("avoid-reinterprets"); } + passes.push("dce"); passes.push("remove-unused-brs"); passes.push("remove-unused-names"); + passes.push("merge-blocks"); + if (this.getFeatures() & FeatureFlags.MultiValue) { + // Optimize tuples before local opts (as splitting tuples can help local + // opts), but also not too early, as we want to be after + // optimize-instructions at least (which can remove tuple-related things). + passes.push("tuple-optimization"); + } if (optimizeLevel >= 3 || shrinkLevel >= 2) { passes.push("inlining"); passes.push("precompute-propagate"); passes.push("simplify-globals-optimizing"); + } else if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("precompute-propagate"); } else { passes.push("precompute"); } @@ -2703,7 +2762,7 @@ export class Module { passes.push("rse"); passes.push("vacuum"); } - if (optimizeLevel >= 3 || shrinkLevel >= 1) { + if (shrinkLevel >= 1) { passes.push("merge-locals"); passes.push("vacuum"); } @@ -2756,6 +2815,10 @@ export class Module { } passes.push("directize"); // replace indirect with direct calls passes.push("dae-optimizing"); // reduce arity + if (optimizeLevel >= 3 || shrinkLevel >= 1) { + // whole-program value-flow analysis + passes.push("gufa-optimizing"); + } passes.push("inlining-optimizing"); // and inline if possible if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("code-folding"); @@ -2795,18 +2858,32 @@ export class Module { passes.push("merge-blocks"); passes.push("vacuum"); + if (this.getFeatures() & FeatureFlags.Strings) { + // Gather strings to globals right before reorder-globals, which will then + // sort them properly. + passes.push("string-gathering"); + } + passes.push("simplify-globals-optimizing"); - passes.push("reorder-globals"); passes.push("remove-unused-brs"); passes.push("optimize-instructions"); + passes.push("vacuum"); } + passes.push("reorder-globals"); + passes.push("reorder-functions"); // clean up - passes.push("duplicate-function-elimination"); + if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("duplicate-function-elimination"); + } if (shrinkLevel >= 2) { passes.push("merge-similar-functions"); } passes.push("memory-packing"); passes.push("remove-unused-module-elements"); + if (optimizeLevel >= 2 || shrinkLevel >= 1) { + // release the global-effects cache populated earlier in post-passes. + passes.push("discard-global-effects"); + } this.runPasses(passes); } @@ -3031,11 +3108,11 @@ export function getConstValueI32(expr: ExpressionRef): i32 { } export function getConstValueI64Low(expr: ExpressionRef): i32 { - return binaryen._BinaryenConstGetValueI64Low(expr); + return i64_low(binaryen._BinaryenConstGetValueI64(expr)); } export function getConstValueI64High(expr: ExpressionRef): i32 { - return binaryen._BinaryenConstGetValueI64High(expr); + return i64_high(binaryen._BinaryenConstGetValueI64(expr)); } export function getConstValueInteger(expr: ExpressionRef, isWasm64: bool): i64 { diff --git a/src/program.ts b/src/program.ts index e5e27ebc59..b03a82bd4f 100644 --- a/src/program.ts +++ b/src/program.ts @@ -390,9 +390,9 @@ export namespace OperatorKind { case Token.GreaterThan_GreaterThan_Equals: return OperatorKind.BitwiseShr; case Token.GreaterThan_GreaterThan_GreaterThan: case Token.GreaterThan_GreaterThan_GreaterThan_Equals: return OperatorKind.BitwiseShrU; - case Token.Equals_Equals: + case Token.Equals_Equals: case Token.Equals_Equals_Equals: return OperatorKind.Eq; - case Token.Exclamation_Equals: + case Token.Exclamation_Equals: case Token.Exclamation_Equals_Equals: return OperatorKind.Ne; case Token.GreaterThan: return OperatorKind.Gt; case Token.GreaterThan_Equals: return OperatorKind.Ge; @@ -436,7 +436,7 @@ export class Program extends DiagnosticEmitter { diagnostics: DiagnosticMessage[] | null = null ) { super(diagnostics); - this.module = Module.create(options.stackSize > 0, options.sizeTypeRef); + this.module = Module.create(options.stackSize > 0, options.sizeTypeRef); this.parser = new Parser(this.diagnostics, this.sources); this.resolver = new Resolver(this); let nativeFile = new File(this, Source.native); @@ -1085,7 +1085,9 @@ export class Program extends DiagnosticEmitter { this.registerConstantInteger(CommonNames.ASC_FEATURE_EXTENDED_CONST, Type.bool, i64_new(options.hasFeature(Feature.ExtendedConst) ? 1 : 0, 0)); this.registerConstantInteger(CommonNames.ASC_FEATURE_STRINGREF, Type.bool, - i64_new(options.hasFeature(Feature.Stringref) ? 1 : 0, 0)); + i64_new(options.hasFeature(Feature.Strings) ? 1 : 0, 0)); + this.registerConstantInteger(CommonNames.ASC_FEATURE_SHARED_EVERYTHING, Type.bool, + i64_new(options.hasFeature(Feature.Strings) ? 1 : 0, 0)); // remember deferred elements let queuedImports = new Array(); @@ -1289,7 +1291,9 @@ export class Program extends DiagnosticEmitter { this.registerWrapperClass(Type.bool, CommonNames.Bool); this.registerWrapperClass(Type.f32, CommonNames.F32); this.registerWrapperClass(Type.f64, CommonNames.F64); - if (options.hasFeature(Feature.Simd)) this.registerWrapperClass(Type.v128, CommonNames.V128); + if (options.hasFeature(Feature.Simd)) { + this.registerWrapperClass(Type.v128, CommonNames.V128); + } if (options.hasFeature(Feature.ReferenceTypes)) { this.registerWrapperClass(Type.func, CommonNames.RefFunc); this.registerWrapperClass(Type.extern, CommonNames.RefExtern); @@ -1300,7 +1304,7 @@ export class Program extends DiagnosticEmitter { this.registerWrapperClass(Type.array, CommonNames.RefArray); this.registerWrapperClass(Type.i31, CommonNames.RefI31); } - if (options.hasFeature(Feature.Stringref)) { + if (options.hasFeature(Feature.Strings)) { this.registerWrapperClass(Type.string, CommonNames.RefString); } } @@ -1974,7 +1978,7 @@ export class Program extends DiagnosticEmitter { case TypeKind.StringviewWTF16: case TypeKind.StringviewIter: { return this.checkFeatureEnabled(Feature.ReferenceTypes, reportNode) - && this.checkFeatureEnabled(Feature.Stringref, reportNode); + && this.checkFeatureEnabled(Feature.Strings, reportNode); } } let classReference = type.getClass(); diff --git a/src/tsconfig.json b/src/tsconfig.json index a6acaae80a..f4dbff1903 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -2,6 +2,7 @@ "extends": "../std/portable.json", "compilerOptions": { "target": "esnext", + "rootDir": "..", "outDir": "../build", "allowJs": false, "sourceMap": true, diff --git a/std/assembly/shared/feature.ts b/std/assembly/shared/feature.ts index 1baa9ba3c9..6fe809b326 100644 --- a/std/assembly/shared/feature.ts +++ b/std/assembly/shared/feature.ts @@ -33,9 +33,11 @@ export const enum Feature { /** Extended const expressions. */ ExtendedConst = 1 << 13, // see: https://github.com/WebAssembly/extended-const /** Reference typed strings. */ - Stringref = 1 << 14, // see: https://github.com/WebAssembly/stringref + Strings = 1 << 14, // see: https://github.com/WebAssembly/stringref + /** Shared-everything threads. */ + SharedEverything = 1 << 15, // see: https://github.com/WebAssembly/shared-everything-threads /** All features. */ - All = (1 << 15) - 1 + All = (1 << 16) - 1 } /** Gets the name of the specified feature one would specify on the command line. */ @@ -55,7 +57,8 @@ export function featureToString(feature: Feature): string { case Feature.Memory64: return "memory64"; case Feature.RelaxedSimd: return "relaxed-simd"; case Feature.ExtendedConst: return "extended-const"; - case Feature.Stringref: return "stringref"; + case Feature.Strings: return "stringref"; + case Feature.SharedEverything: return "shared-everything"; } assert(false); return ""; diff --git a/tests/compiler/NonNullable.release.wat b/tests/compiler/NonNullable.release.wat index 7f27ab78fa..03d6aaf8c0 100644 --- a/tests/compiler/NonNullable.release.wat +++ b/tests/compiler/NonNullable.release.wat @@ -20,103 +20,6 @@ (data $5.1 (i32.const 1272) "\02\00\00\00^\00\00\00U\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00\'\00n\00u\00l\00l\00\'\00 \00(\00n\00o\00t\00 \00a\00s\00s\00i\00g\00n\00e\00d\00 \00o\00r\00 \00f\00a\00i\00l\00e\00d\00 \00c\00a\00s\00t\00)") (export "memory" (memory $0)) (start $~start) - (func $~start - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1388 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 3 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1136 - i32.const 1136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - call $NonNullable/assertNonNull<~lib/string/String> - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1388 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - call $~lib/string/String.__ne - if - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store - call $NonNullable/assertNonNull<~lib/string/String> - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34176 - i32.const 34224 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -351,4 +254,101 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1388 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.const 1168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $NonNullable/assertNonNull<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1388 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $~lib/string/String.__ne + if + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store + call $NonNullable/assertNonNull<~lib/string/String> + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34176 + i32.const 34224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/abi.release.wat b/tests/compiler/abi.release.wat index 5320131fcb..f5060e8da6 100644 --- a/tests/compiler/abi.release.wat +++ b/tests/compiler/abi.release.wat @@ -3,11 +3,11 @@ (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\02\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") - (export "exported" (func $abi/exported)) - (export "exportedExported" (func $abi/exported)) - (export "exportedInternal" (func $abi/exported)) + (export "exported" (func $abi/exportedInternal)) + (export "exportedExported" (func $abi/exportedInternal)) + (export "exportedInternal" (func $abi/exportedInternal)) (export "memory" (memory $0)) - (func $abi/exported (result i32) + (func $abi/exportedInternal (result i32) i32.const -128 ) ) diff --git a/tests/compiler/assert-nonnull.release.wat b/tests/compiler/assert-nonnull.release.wat index 67f4405bc2..53e5430763 100644 --- a/tests/compiler/assert-nonnull.release.wat +++ b/tests/compiler/assert-nonnull.release.wat @@ -132,7 +132,57 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testObj (param $0 i32) (result i32) + (func $export:assert-nonnull/testRet (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.eqz + br_if $folding-inner1 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1184 + i32.const 44 + i32.const 10 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testProp (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -158,23 +208,23 @@ i64.store global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 i32.store offset=4 local.get $0 i32.eqz if i32.const 1056 i32.const 1184 - i32.const 11 + i32.const 15 i32.const 10 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer @@ -182,6 +232,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 34256 @@ -191,7 +242,65 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testProp (param $0 i32) (result i32) + (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner1 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + i32.const 1184 + i32.const 52 + i32.const 10 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -220,7 +329,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store offset=4 local.get $0 @@ -228,21 +337,15 @@ if i32.const 1056 i32.const 1184 - i32.const 15 + i32.const 48 i32.const 10 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - return + i32.load + call_indirect (type $1) + unreachable end i32.const 34256 i32.const 34304 @@ -251,7 +354,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testArr (param $0 i32) (result i32) + (func $export:assert-nonnull/testObj (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -283,7 +386,7 @@ if i32.const 1056 i32.const 1184 - i32.const 19 + i32.const 11 i32.const 10 call $~lib/builtins/abort unreachable @@ -291,6 +394,39 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testFn2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -305,50 +441,72 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 i32.eqz if - i32.const 1248 - i32.const 1312 - i32.const 114 - i32.const 42 + i32.const 1056 + i32.const 1184 + i32.const 39 + i32.const 13 call $~lib/builtins/abort unreachable end + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + call_indirect (type $1) + unreachable + end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:assert-nonnull/testFn (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.load - local.tee $0 - i32.store offset=4 + i32.store local.get $0 i32.eqz if - i32.const 1360 - i32.const 1312 - i32.const 118 - i32.const 40 + i32.const 1056 + i32.const 1184 + i32.const 35 + i32.const 10 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - return + i32.load + call_indirect (type $1) + unreachable end i32.const 34256 i32.const 34304 @@ -417,167 +575,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testAll (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=12 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.tee $0 - i32.store offset=16 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - i32.const 1184 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable - ) - (func $export:assert-nonnull/testAll2 (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=12 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.tee $0 - i32.store offset=16 - local.get $0 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - i32.const 1184 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable - ) - (func $export:assert-nonnull/testFn (param $0 i32) (result i32) + (func $export:assert-nonnull/testArr (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -591,7 +589,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -599,44 +597,21 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 i32.eqz if i32.const 1056 i32.const 1184 - i32.const 35 + i32.const 19 i32.const 10 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - call_indirect (type $1) - unreachable - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:assert-nonnull/testFn2 (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -654,23 +629,50 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=12 i32.eqz if - i32.const 1056 - i32.const 1184 - i32.const 39 - i32.const 13 + i32.const 1248 + i32.const 1312 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=4 i32.load - call_indirect (type $1) - unreachable + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1360 + i32.const 1312 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end i32.const 34256 i32.const 34304 @@ -679,7 +681,8 @@ call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testRet (param $0 i32) (result i32) + (func $export:assert-nonnull/testAll2 (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -694,7 +697,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -702,18 +705,47 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=12 local.get $0 i32.eqz br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load - call_indirect (type $1) - unreachable + local.tee $0 + i32.store offset=16 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end i32.const 34256 i32.const 34304 @@ -724,66 +756,13 @@ end i32.const 1056 i32.const 1184 - i32.const 44 + i32.const 31 i32.const 10 call $~lib/builtins/abort unreachable ) - (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 1056 - i32.const 1184 - i32.const 48 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - call_indirect (type $1) - unreachable - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) + (func $export:assert-nonnull/testAll (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -798,7 +777,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -806,26 +785,47 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=8 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + call $~lib/array/Array#__get local.tee $0 - i32.store offset=4 + i32.store offset=12 local.get $0 i32.eqz br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load - call_indirect (type $1) - unreachable + local.tee $0 + i32.store offset=16 + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end i32.const 34256 i32.const 34304 @@ -836,7 +836,7 @@ end i32.const 1056 i32.const 1184 - i32.const 52 + i32.const 27 i32.const 10 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/assignment-chain.release.wat b/tests/compiler/assignment-chain.release.wat index 0200dad357..fb11835ac0 100644 --- a/tests/compiler/assignment-chain.release.wat +++ b/tests/compiler/assignment-chain.release.wat @@ -5,8 +5,8 @@ (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -39,51 +39,6 @@ (export "static_setter_assignment_chain" (func $assignment-chain/static_setter_assignment_chain)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -628,1011 +583,914 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $3 - i32.const 4 + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 end - local.get $3 - local.get $1 + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 i32.const 16 + i32.shl + i32.const 4 i32.sub - local.tee $5 - i32.eq + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end + local.get $5 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.load + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + i32.gt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - local.get $3 - i32.const 8 + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub local.tee $3 - i32.const 1 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $assignment-chain/B + block $assignment-chain/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - unreachable - end - i32.const 34304 - i32.const 0 - i32.store - i32.const 35872 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34304 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34304 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 end - end - i32.const 34304 - i32.const 35876 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34304 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34300 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.load offset=4 + local.get $1 + i32.ctz local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne if i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 1392 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34300 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34300 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.const 4 - i32.shr_u - local.set $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $1 - i32.const 536870910 + i32.const 0 + end + if + unreachable + end + i32.const 34304 + i32.const 0 + i32.store + i32.const 35872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 i32.lt_u if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub + local.get $0 + i32.const 2 i32.shl + i32.const 34304 i32.add - i32.const 1 - i32.sub + i32.const 0 + i32.store offset=4 + i32.const 0 local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 - i32.const 16 - i32.lt_u + i32.const 34304 + i32.const 35876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 334 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.const 19 + i32.add + i32.const -16 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 i32.const 4 - i32.shl i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 + i32.const 1572 i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 i32.eqz if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/tlsf/ROOT - local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 16 + ) + (func $assignment-chain/static_setter_assignment_chain + global.get $assignment-chain/C._setter_cnt + i32.const 1 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.set $assignment-chain/C._setter_cnt + global.get $assignment-chain/C._setter_cnt + i32.const 1 + i32.add + global.set $assignment-chain/C._setter_cnt + global.get $assignment-chain/C._setter_cnt + i32.const 2 + i32.ne if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 0 + i32.const 1456 + i32.const 45 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 + ) + (func $assignment-chain/setter_assignment_chain + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - i32.lt_s + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + f64.const 0 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $assignment-chain/B#set:y + local.get $1 + call $assignment-chain/B#set:y + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + i32.const 2 + i32.ne if - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 1456 + i32.const 30 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 if i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 + i32.const 1456 + i32.const 31 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $assignment-chain/normal_assignment_chain + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $assignment-chain/static_setter_assignment_chain - global.get $assignment-chain/C._setter_cnt - i32.const 1 - i32.add - global.set $assignment-chain/C._setter_cnt - global.get $assignment-chain/C._setter_cnt - i32.const 1 - i32.add - global.set $assignment-chain/C._setter_cnt - global.get $assignment-chain/C._setter_cnt - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $assignment-chain/B - block $assignment-chain/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $assignment-chain/A $assignment-chain/B $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34300 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $assignment-chain/normal_assignment_chain - call $assignment-chain/setter_assignment_chain - call $assignment-chain/static_setter_assignment_chain - ) - (func $assignment-chain/normal_assignment_chain - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1532 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1741,158 +1599,301 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $assignment-chain/setter_assignment_chain + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34300 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $assignment-chain/normal_assignment_chain + call $assignment-chain/setter_assignment_chain + call $assignment-chain/static_setter_assignment_chain + ) + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/object/Object#constructor - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - f64.const 0 - f64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $assignment-chain/B#set:y - local.get $1 - call $assignment-chain/B#set:y - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load - i32.const 2 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end i32.const 0 - i32.const 1456 - i32.const 30 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34300 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1456 - i32.const 31 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34300 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34300 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1532 - i32.lt_s - if - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/bigint-integration.release.wat b/tests/compiler/bigint-integration.release.wat index 65f0bbea0b..6702bb5684 100644 --- a/tests/compiler/bigint-integration.release.wat +++ b/tests/compiler/bigint-integration.release.wat @@ -14,9 +14,6 @@ (export "getInternalValue" (func $bigint-integration/getInternalValue)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $bigint-integration/getInternalValue (result i64) - i64.const 9007199254740991 - ) (func $~start global.get $~started if @@ -47,4 +44,7 @@ unreachable end ) + (func $bigint-integration/getInternalValue (result i64) + i64.const 9007199254740991 + ) ) diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index 09936b2aba..4fa9022ad2 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -2,22 +2,22 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func (param i32))) (type $2 (func (param i32) (result i32))) - (type $3 (func (result i32))) - (type $4 (func)) - (type $5 (func (param i32 i32 i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func (result i32))) + (type $5 (func)) (type $6 (func (param i32 i32))) (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $9 (func (param f64) (result f64))) - (type $10 (func (param i64 i64) (result i64))) - (type $11 (func (result i64))) - (type $12 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $10 (func (param f64) (result f64))) + (type $11 (func (param i64 i64) (result i64))) + (type $12 (func (result i64))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $bindings/esm/plainGlobal i32 (i32.const 1)) (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) (global $bindings/esm/stringGlobal i32 (i32.const 1056)) @@ -120,218 +120,6 @@ (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) (export "functionFunction" (func $export:bindings/esm/staticarrayU16)) - (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $bindings/esm/getMaxUnsigned32 (result i32) - i32.const -1 - ) - (func $bindings/esm/getMaxUnsigned64 (result i64) - i64.const -1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $bindings/esm/mutableStringGlobal - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1552 - call $~lib/rt/itcms/__visit - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1968 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 2096 - call $~lib/rt/itcms/__visit - i32.const 2160 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 35044 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 2208 - i32.load - i32.gt_u - if - i32.const 1552 - i32.const 1616 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - i32.const 2212 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -356,591 +144,407 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1696 - i32.const 268 - i32.const 14 + i32.const 1360 + i32.const 1424 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1696 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1360 i32.const 1696 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1696 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1696 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.or + i32.store offset=4 local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 i32.add - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz if i32.const 0 - i32.const 1696 - i32.const 234 + i32.const 1424 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub + global.get $~lib/rt/itcms/white local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s if - i32.const 0 - i32.const 1696 - i32.const 251 - i32.const 14 + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 35056 - i32.const 0 - i32.store - i32.const 36624 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 35056 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 35056 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 35056 - i32.const 36628 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 35056 - global.set $~lib/rt/tlsf/ROOT + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1202,51 +806,185 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 + i32.const 0 + i32.const 1424 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 2208 + i32.load + i32.gt_u + if + i32.const 1552 + i32.const 1616 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + i32.const 2212 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1257,627 +995,374 @@ if i32.const 0 i32.const 1696 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 - i32.eqz + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - i32.const 0 - i32.const 1696 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.get $1 + i32.eqz if - i32.const 1360 - i32.const 1424 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1696 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$70 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1360 + i32.const 0 i32.const 1696 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 + local.get $0 local.get $4 - i32.load offset=1568 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add local.get $2 - i32.const 16 - i32.shl + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub - i32.ne - i32.shl i32.add - i32.const 65535 + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - i32.const -65536 + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1696 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 501 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1696 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 - local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and + i32.const 1 + local.get $2 + i32.shl i32.or i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 i32.const -4 i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 i32.eqz if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35044 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end return end local.get $0 + i32.load offset=8 + local.tee $0 i32.eqz if i32.const 0 i32.const 1424 - i32.const 295 - i32.const 14 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 i32.load offset=4 i32.const 3 i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $bindings/esm/newInternref (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 2096 - i32.const 1424 - i32.const 338 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/pinSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $3 - i32.const 3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=8 - end - local.get $0 - ) - (func $~lib/rt/itcms/__unpin (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 2160 - i32.const 1424 - i32.const 352 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) - (func $~lib/rt/itcms/__collect - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold + i32.or + i32.store offset=4 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2038,189 +1523,84 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~setArgumentsLength (param $0 i32) + (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - global.set $~argumentsLength ) - (func $~start - global.get $~started + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s if - return + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1 - global.set $~started - i32.const 1152 - i32.const 1 - f64.const 42 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1184 - call $~lib/bindings/dom/console.log - global.get $~lib/bindings/dom/Math.E - call $~lib/bindings/dom/Math.log - drop - call $bindings/esm/Date_getTimezoneOffset - drop - memory.size - i32.const 16 - i32.shl - i32.const 35044 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1476 - i32.const 1472 - i32.store - i32.const 1480 - i32.const 1472 - i32.store - i32.const 1472 - global.set $~lib/rt/itcms/pinSpace - i32.const 1508 - i32.const 1504 - i32.store - i32.const 1512 - i32.const 1504 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - i32.const 1504 - global.set $~lib/rt/itcms/toSpace - i32.const 1652 - i32.const 1648 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1656 - i32.const 1648 + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1648 - global.set $~lib/rt/itcms/fromSpace - ) - (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub + i32.const 4 + i32.add global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$284 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1760 - local.set $2 - br $__inlined_func$~lib/string/String#concat$284 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $3 - memory.copy - local.get $2 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2244,14 +1624,14 @@ i32.store local.get $0 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2273,16 +1653,38 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 - i32.load offset=8 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 2 i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1856 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2306,545 +1708,413 @@ i32.store local.get $1 local.get $0 - i32.load offset=8 - i32.const 3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 i32.shr_u i32.ge_u if i32.const 1552 - i32.const 1792 - i32.const 1173 - i32.const 64 + i32.const 1856 + i32.const 78 + i32.const 41 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add - local.get $2 - i64.store + i32.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.store - block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if local.get $1 - call $~lib/typedarray/Float32Array#get:length - local.get $5 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 134217727 - i32.gt_u - if - i32.const 1248 - i32.const 1296 - i32.const 19 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 3 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $2 - local.get $5 - i32.store - local.get $2 - local.get $5 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - br $__inlined_func$~lib/typedarray/Uint64Array#constructor - end - br $folding-inner1 + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub local.tee $2 - i32.store offset=4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1552 - i32.const 1792 - i32.const 452 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $3 - local.get $5 - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - local.set $3 - loop $for-loop|1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/typedarray/Float32Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1552 - i32.const 1792 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 - local.get $4 - i64.trunc_sat_f32_u - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1696 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - return + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 35056 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36624 + i32.const 0 i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 35056 + i32.const 36628 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35056 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + i64.extend_i32_u + i64.lt_u if - i32.const 1552 - i32.const 1856 - i32.const 78 - i32.const 41 + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $0 - i32.const 20 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 1552 - i32.const 1856 - i32.const 93 - i32.const 41 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and + local.get $3 + i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + local.get $3 + i32.store offset=1568 local.get $0 - i32.load offset=12 - i32.ge_u + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/esm/mutableStringGlobal + local.tee $0 if - i32.const 1552 - i32.const 1920 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1968 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 2096 + call $~lib/rt/itcms/__visit + i32.const 2160 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) @@ -2974,9 +2244,144 @@ i32.store offset=8 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1552 + i32.const 1920 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1552 + i32.const 1920 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1968 + i32.const 1920 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3046,9 +2451,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3063,8 +2468,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3083,7 +2488,6 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 local.get $1 @@ -3091,210 +2495,339 @@ i32.shl i32.add i32.load - local.tee $0 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$284 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1760 + local.set $2 + br $__inlined_func$~lib/string/String#concat$284 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + i32.const 1152 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1184 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + call $bindings/esm/Date_getTimezoneOffset + drop + memory.size + i32.const 16 + i32.shl + i32.const 35044 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/pinSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/toSpace + i32.const 1652 + i32.const 1648 + i32.store + i32.const 1656 + i32.const 1648 + i32.store + i32.const 1648 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 1968 - i32.const 1920 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 + i32.const 2160 + i32.const 1424 + i32.const 352 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq if local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1552 - i32.const 1920 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 local.get $1 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $0 - local.get $3 - i32.store offset=12 + local.get $1 + i32.store offset=8 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $0 + if local.get $0 i32.const 20 i32.sub - i32.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $4 - local.get $2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $5 - i32.const 1073741820 - i32.gt_u + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq if - i32.const 1248 - i32.const 1296 - i32.const 52 - i32.const 43 + i32.const 2096 + i32.const 1424 + i32.const 338 + i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or i32.store offset=4 - local.get $5 - local.get $0 + local.get $1 local.get $2 - memory.copy + i32.store offset=8 local.get $2 - local.get $5 - i32.add local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold ) - (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3318,7 +2851,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/stringFunction + call $bindings/esm/typedarrayFunction global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3396,7 +2929,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3420,7 +2953,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/typedarrayFunction + call $bindings/esm/stringFunction global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3618,9 +3151,265 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=18 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 0 + f32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + f64.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=56 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=60 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=64 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$bindings/esm/PlainObject#constructor$4 + end + br $folding-inner1 + end + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load8_s + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $3 + local.get $1 + i32.load8_s + i32.add + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load16_s offset=2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $1 + i32.load16_s offset=2 + i32.add + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3638,12 +3427,128 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3665,7 +3570,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3676,8 +3581,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3692,7 +3597,7 @@ call $~lib/array/Array#get:length local.get $4 i32.add - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -3709,39 +3614,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 11 + i32.const 12 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store - local.get $6 + local.get $5 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 268435455 i32.gt_u if @@ -3754,54 +3659,54 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 8 i32.le_u select i32.const 2 i32.shl - local.tee $3 + local.tee $6 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=12 - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 + local.get $5 local.get $6 - local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 local.get $5 + local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer @@ -3813,17 +3718,22 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $6 - local.get $2 + i32.store offset=12 local.get $0 local.get $2 - call $~lib/array/Array#__get - call $~lib/array/Array#__set + call $~lib/array/Array<~lib/string/String>#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $5 + local.get $2 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 i32.const 1 i32.add @@ -3843,11 +3753,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=12 local.get $0 call $~lib/array/Array#get:length local.get $2 @@ -3855,13 +3765,18 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=8 - local.get $6 + local.get $5 local.get $3 - local.get $1 - local.get $2 - call $~lib/array/Array#__get - call $~lib/array/Array#__set + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 i32.const 1 i32.add @@ -3870,14 +3785,14 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 return end i32.const 35072 @@ -3887,7 +3802,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3909,7 +3824,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3920,8 +3835,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3936,7 +3851,7 @@ call $~lib/array/Array#get:length local.get $4 i32.add - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -3953,39 +3868,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 12 + i32.const 11 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 268435455 i32.gt_u if @@ -3998,54 +3913,54 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $4 - local.get $4 + local.get $5 + local.get $5 i32.const 8 i32.le_u select i32.const 2 i32.shl - local.tee $6 + local.tee $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=12 - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.store - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 local.get $6 + local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 + local.get $6 local.get $5 - local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer @@ -4057,22 +3972,17 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.store offset=8 - local.get $5 + local.get $6 local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#__set + local.get $0 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -4092,11 +4002,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 + i32.store offset=8 local.get $0 call $~lib/array/Array#get:length local.get $2 @@ -4104,18 +4014,13 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=12 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 i32.store offset=8 - local.get $5 + local.get $6 local.get $3 - local.get $4 - call $~lib/array/Array<~lib/string/String>#__set + local.get $1 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -4124,14 +4029,14 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return end i32.const 35072 @@ -4141,28 +4046,18 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2276 i32.lt_s @@ -4174,7 +4069,21 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $5 + i32.add + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4188,8 +4097,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 68 - i32.const 13 + i32.const 12 + i32.const 7 call $~lib/rt/itcms/__new local.tee $2 i32.store @@ -4198,7 +4107,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4206,187 +4115,259 @@ i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 + i32.const 12 + i32.const 3 call $~lib/rt/itcms/__new local.tee $2 i32.store end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store16 offset=2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store8 offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + i32.store local.get $2 i32.const 0 - i32.store16 offset=18 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i64.store offset=24 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $2 i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=36 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store8 offset=40 + i32.store offset=8 + local.get $5 + i32.const 134217727 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 0 - f32.store offset=44 + local.get $5 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 - local.get $2 - f64.const 0 - f64.store offset=48 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=56 + local.get $5 + i32.store local.get $2 - i32.const 0 + local.get $5 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 0 - i32.store offset=60 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $5 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 0 - i32.store offset=64 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 - br $__inlined_func$bindings/esm/PlainObject#constructor$4 + br $__inlined_func$~lib/typedarray/Uint64Array#constructor end br $folding-inner1 end local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load8_s + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + local.get $5 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $3 - local.get $1 - i32.load8_s - i32.add - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load16_s offset=2 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $1 - i32.load16_s offset=2 - i32.add - i32.store16 offset=2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $4 + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 return end @@ -4397,9 +4378,20 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/newInternref (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4414,15 +4406,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $bindings/esm/getMaxUnsigned64 (result i64) + i64.const -1 + ) + (func $bindings/esm/getMaxUnsigned32 (result i32) + i32.const -1 + ) ) diff --git a/tests/compiler/bindings/noExportRuntime.release.wat b/tests/compiler/bindings/noExportRuntime.release.wat index 9a784f3d63..8db482731d 100644 --- a/tests/compiler/bindings/noExportRuntime.release.wat +++ b/tests/compiler/bindings/noExportRuntime.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func (result i32))) (type $1 (func (param i32))) - (type $2 (func)) - (type $3 (func (param i32 i32))) + (type $2 (func (param i32 i32))) + (type $3 (func)) (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -68,203 +68,6 @@ (export "_start" (func $~start)) (export "takesNonPlainObject" (func $export:bindings/noExportRuntime/takesNonPlainObject)) (export "takesFunction" (func $export:bindings/noExportRuntime/takesNonPlainObject)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $bindings/noExportRuntime/isBuffer - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $bindings/noExportRuntime/isTypedArray - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1632 - call $~lib/rt/itcms/__visit - i32.const 1712 - call $~lib/rt/itcms/__visit - i32.const 1392 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1200 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34548 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1744 - i32.load - i32.gt_u - if - i32.const 1392 - i32.const 1456 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1748 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -289,330 +92,387 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1536 - i32.const 268 - i32.const 14 + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1536 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 i32.const 1536 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1536 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1536 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1536 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1536 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -620,520 +480,575 @@ if i32.const 0 i32.const 1536 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.tee $1 + i32.load offset=96 + i32.eq if - i32.const 0 - i32.const 1536 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1536 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1536 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1536 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1536 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34560 - i32.const 0 - i32.store - i32.const 36128 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34560 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34560 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - i32.const 34560 - i32.const 36132 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34560 - global.set $~lib/rt/tlsf/ROOT + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34548 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1264 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34548 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1264 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 34548 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34548 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1744 + i32.load + i32.gt_u + if + i32.const 1392 + i32.const 1456 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1748 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $bindings/noExportRuntime/NonPlainObject + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/typedarray/Int32Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int32Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $bindings/noExportRuntime/NonPlainObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 end - global.get $~lib/rt/tlsf/ROOT - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 15 - i32.and - i32.const 1 + i32.store local.get $0 - select - if (result i32) - i32.const 1 - else + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1536 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + br $folding-inner1 end + return end - i32.const 10 - return + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1229,528 +1144,363 @@ i32.and local.tee $1 if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1200 - i32.const 1264 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1200 - i32.const 1536 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - local.get $5 + i32.const 0 end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34560 + i32.const 0 + i32.store + i32.const 36128 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34560 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1536 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $5 + i32.const 34560 + i32.const 36132 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34560 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1536 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + local.get $1 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1536 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $3 + i32.store offset=1568 local.get $0 local.get $1 - i32.store - local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/noExportRuntime/isBuffer + local.tee $0 if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/__visit + end + global.get $bindings/noExportRuntime/isTypedArray + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1632 + call $~lib/rt/itcms/__visit + i32.const 1712 + call $~lib/rt/itcms/__visit + i32.const 1392 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.ne if local.get $0 - i32.const 20 - i32.sub i32.load offset=4 i32.const 3 i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 3 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end - ) - (func $bindings/noExportRuntime/takesReturnsBasic (param $0 i32) (result i32) - global.get $bindings/noExportRuntime/isBasic - ) - (func $bindings/noExportRuntime/returnsString (result i32) - i32.const 1056 - ) - (func $bindings/noExportRuntime/returnsBuffer (result i32) - global.get $bindings/noExportRuntime/isBuffer - ) - (func $bindings/noExportRuntime/returnsTypedArray (result i32) - global.get $bindings/noExportRuntime/isTypedArray - ) - (func $bindings/noExportRuntime/returnsArrayOfBasic (result i32) - i32.const 1632 - ) - (func $bindings/noExportRuntime/returnsArrayOfArray (result i32) - i32.const 1712 - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $bindings/noExportRuntime/NonPlainObject - block $~lib/array/Array<~lib/array/Array> - block $~lib/array/Array - block $~lib/typedarray/Int32Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int32Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $bindings/noExportRuntime/NonPlainObject $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1780 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1780 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner1 + call $~lib/rt/itcms/Object#makeGray end - return end - unreachable end + end + ) + (func $export:bindings/noExportRuntime/takesNonPlainObject (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1780 + i32.lt_s + if i32.const 34576 i32.const 34624 i32.const 1 @@ -1761,9 +1511,6 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1881,95 +1628,349 @@ local.tee $0 i32.store end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $bindings/noExportRuntime/isTypedArray + br $__inlined_func$start:bindings/noExportRuntime + end + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34548 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 1 - call $~lib/rt/itcms/__new + i32.load offset=4 local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end local.get $0 - global.set $bindings/noExportRuntime/isTypedArray - br $__inlined_func$start:bindings/noExportRuntime + i32.const 34548 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34548 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1536 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - i32.const 34576 - i32.const 34624 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) - (func $export:bindings/noExportRuntime/takesNonPlainObject (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1780 - i32.lt_s - if - i32.const 34576 - i32.const 34624 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + (func $bindings/noExportRuntime/takesReturnsBasic (param $0 i32) (result i32) + global.get $bindings/noExportRuntime/isBasic + ) + (func $bindings/noExportRuntime/returnsTypedArray (result i32) + global.get $bindings/noExportRuntime/isTypedArray + ) + (func $bindings/noExportRuntime/returnsString (result i32) + i32.const 1056 + ) + (func $bindings/noExportRuntime/returnsBuffer (result i32) + global.get $bindings/noExportRuntime/isBuffer + ) + (func $bindings/noExportRuntime/returnsArrayOfBasic (result i32) + i32.const 1632 + ) + (func $bindings/noExportRuntime/returnsArrayOfArray (result i32) + i32.const 1712 ) ) diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index dcd117d596..6d66004d1a 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -2,22 +2,22 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func (param i32))) (type $2 (func (param i32) (result i32))) - (type $3 (func (result i32))) - (type $4 (func)) - (type $5 (func (param i32 i32 i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func (result i32))) + (type $5 (func)) (type $6 (func (param i32 i32))) (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $9 (func (param f64) (result f64))) - (type $10 (func (param i64 i64) (result i64))) - (type $11 (func (result i64))) - (type $12 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $10 (func (param f64) (result f64))) + (type $11 (func (param i64 i64) (result i64))) + (type $12 (func (result i64))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) (import "env" "Date.getTimezoneOffset" (func $bindings/esm/Date_getTimezoneOffset (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $bindings/esm/plainGlobal i32 (i32.const 1)) (global $bindings/esm/plainMutableGlobal (mut i32) (i32.const 2)) (global $bindings/esm/stringGlobal i32 (i32.const 1056)) @@ -120,218 +120,6 @@ (export "objectFunction" (func $export:bindings/esm/objectFunction)) (export "internrefFunction" (func $export:bindings/esm/internrefFunction)) (export "functionFunction" (func $export:bindings/esm/staticarrayU16)) - (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $bindings/esm/getMaxUnsigned32 (result i32) - i32.const -1 - ) - (func $bindings/esm/getMaxUnsigned64 (result i64) - i64.const -1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1552 - call $~lib/rt/itcms/__visit - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1968 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 2096 - call $~lib/rt/itcms/__visit - i32.const 2160 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $bindings/esm/mutableStringGlobal - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 35044 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 2208 - i32.load - i32.gt_u - if - i32.const 1552 - i32.const 1616 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - i32.const 2212 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -356,591 +144,407 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1696 - i32.const 268 - i32.const 14 + i32.const 1360 + i32.const 1424 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1696 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1360 i32.const 1696 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1696 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1696 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.or + i32.store offset=4 local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 i32.add - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz if i32.const 0 - i32.const 1696 - i32.const 234 + i32.const 1424 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub + global.get $~lib/rt/itcms/white local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s if - i32.const 0 - i32.const 1696 - i32.const 251 - i32.const 14 + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 35056 - i32.const 0 - i32.store - i32.const 36624 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 35056 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 35056 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 35056 - i32.const 36628 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 35056 - global.set $~lib/rt/tlsf/ROOT + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1202,51 +806,185 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 + i32.const 0 + i32.const 1424 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end local.get $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $2 + i32.const 2208 + i32.load + i32.gt_u + if + i32.const 1552 + i32.const 1616 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + i32.const 2212 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $1 + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1257,627 +995,374 @@ if i32.const 0 i32.const 1696 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 - i32.eqz + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - i32.const 0 - i32.const 1696 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.get $1 + i32.eqz if - i32.const 1360 - i32.const 1424 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1696 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$71 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$71 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1360 + i32.const 0 i32.const 1696 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 + local.get $0 local.get $4 - i32.load offset=1568 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add local.get $2 - i32.const 16 - i32.shl + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub - i32.ne - i32.shl i32.add - i32.const 65535 + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - i32.const -65536 + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1696 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 501 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1696 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 - local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and + i32.const 1 + local.get $2 + i32.shl i32.or i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load + ) + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 i32.const -4 i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 i32.eqz if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35044 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end return end local.get $0 + i32.load offset=8 + local.tee $0 i32.eqz if i32.const 0 i32.const 1424 - i32.const 295 - i32.const 14 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 i32.load offset=4 i32.const 3 i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $bindings/esm/newInternref (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 2096 - i32.const 1424 - i32.const 338 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/pinSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $3 - i32.const 3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=8 - end - local.get $0 - ) - (func $~lib/rt/itcms/__unpin (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 2160 - i32.const 1424 - i32.const 352 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) - (func $~lib/rt/itcms/__collect - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold + i32.or + i32.store offset=4 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2038,189 +1523,84 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~setArgumentsLength (param $0 i32) + (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - global.set $~argumentsLength ) - (func $~start - global.get $~started + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s if - return + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1 - global.set $~started - i32.const 1152 - i32.const 1 - f64.const 42 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 1184 - call $~lib/bindings/dom/console.log - global.get $~lib/bindings/dom/Math.E - call $~lib/bindings/dom/Math.log - drop - call $bindings/esm/Date_getTimezoneOffset - drop - memory.size - i32.const 16 - i32.shl - i32.const 35044 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1476 - i32.const 1472 - i32.store - i32.const 1480 - i32.const 1472 - i32.store - i32.const 1472 - global.set $~lib/rt/itcms/pinSpace - i32.const 1508 - i32.const 1504 - i32.store - i32.const 1512 - i32.const 1504 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - i32.const 1504 - global.set $~lib/rt/itcms/toSpace - i32.const 1652 - i32.const 1648 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1656 - i32.const 1648 + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1648 - global.set $~lib/rt/itcms/fromSpace - ) - (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub + i32.const 4 + i32.add global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$285 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1760 - local.set $2 - br $__inlined_func$~lib/string/String#concat$285 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $3 - memory.copy - local.get $2 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2244,14 +1624,14 @@ i32.store local.get $0 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#get:length (param $0 i32) (result i32) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2273,16 +1653,38 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 - i32.load offset=8 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 2 i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1856 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2306,545 +1708,413 @@ i32.store local.get $1 local.get $0 - i32.load offset=8 - i32.const 3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 i32.shr_u i32.ge_u if i32.const 1552 - i32.const 1792 - i32.const 1173 - i32.const 64 + i32.const 1856 + i32.const 78 + i32.const 41 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add - local.get $2 - i64.store + i32.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.store - block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if local.get $1 - call $~lib/typedarray/Float32Array#get:length - local.get $5 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 134217727 - i32.gt_u - if - i32.const 1248 - i32.const 1296 - i32.const 19 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 3 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $2 - local.get $5 - i32.store - local.get $2 - local.get $5 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - br $__inlined_func$~lib/typedarray/Uint64Array#constructor - end - br $folding-inner1 + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub local.tee $2 - i32.store offset=4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1552 - i32.const 1792 - i32.const 452 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $3 - local.get $5 - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - local.set $3 - loop $for-loop|1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/typedarray/Float32Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1552 - i32.const 1792 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $5 - local.get $4 - i64.trunc_sat_f32_u - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1696 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - return + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 35056 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36624 + i32.const 0 i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 35056 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 35056 + i32.const 36628 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35056 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + i64.extend_i32_u + i64.lt_u if - i32.const 1552 - i32.const 1856 - i32.const 78 - i32.const 41 + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $0 - i32.const 20 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 1552 - i32.const 1856 - i32.const 93 - i32.const 41 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and + local.get $3 + i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + local.get $3 + i32.store offset=1568 local.get $0 - i32.load offset=12 - i32.ge_u + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1968 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 2096 + call $~lib/rt/itcms/__visit + i32.const 2160 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $bindings/esm/mutableStringGlobal + local.tee $0 if - i32.const 1552 - i32.const 1920 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) @@ -2974,9 +2244,144 @@ i32.store offset=8 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1552 + i32.const 1920 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + if + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1552 + i32.const 1920 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 1968 + i32.const 1920 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3046,9 +2451,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3063,8 +2468,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3083,7 +2488,6 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 local.get $1 @@ -3091,210 +2495,339 @@ i32.shl i32.add i32.load - local.tee $0 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$285 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1760 + local.set $2 + br $__inlined_func$~lib/string/String#concat$285 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $3 + memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + i32.const 1152 + i32.const 1 + f64.const 42 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1184 + call $~lib/bindings/dom/console.log + global.get $~lib/bindings/dom/Math.E + call $~lib/bindings/dom/Math.log + drop + call $bindings/esm/Date_getTimezoneOffset + drop + memory.size + i32.const 16 + i32.shl + i32.const 35044 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1476 + i32.const 1472 + i32.store + i32.const 1480 + i32.const 1472 + i32.store + i32.const 1472 + global.set $~lib/rt/itcms/pinSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/toSpace + i32.const 1652 + i32.const 1648 + i32.store + i32.const 1656 + i32.const 1648 + i32.store + i32.const 1648 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 1968 - i32.const 1920 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 + i32.const 2160 + i32.const 1424 + i32.const 352 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq if local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1552 - i32.const 1920 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 local.get $1 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $0 - local.get $3 - i32.store offset=12 + local.get $1 + i32.store offset=8 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $0 + if local.get $0 i32.const 20 i32.sub - i32.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $4 - local.get $2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $5 - i32.const 1073741820 - i32.gt_u + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq if - i32.const 1248 - i32.const 1296 - i32.const 52 - i32.const 43 + i32.const 2096 + i32.const 1424 + i32.const 338 + i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or i32.store offset=4 - local.get $5 - local.get $0 + local.get $1 local.get $2 - memory.copy + i32.store offset=8 local.get $2 - local.get $5 - i32.add local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + end + local.get $0 + ) + (func $~lib/rt/itcms/__collect + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end end - i32.const 35072 - i32.const 35120 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold ) - (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3318,7 +2851,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/stringFunction + call $bindings/esm/typedarrayFunction global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3396,7 +2929,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/stringFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3420,7 +2953,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $bindings/esm/typedarrayFunction + call $bindings/esm/stringFunction global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3618,9 +3151,265 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/staticarrayU16 (param $0 i32) (result i32) + (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store16 offset=18 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i64.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store8 offset=40 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 0 + f32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + f64.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=56 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=60 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=64 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + br $__inlined_func$bindings/esm/PlainObject#constructor$4 + end + br $folding-inner1 + end + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load8_s + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $3 + local.get $1 + i32.load8_s + i32.add + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load16_s offset=2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $1 + i32.load16_s offset=2 + i32.add + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3638,12 +3427,128 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/bufferFunction (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $4 + local.get $2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $5 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + i32.const 35072 + i32.const 35120 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3665,7 +3570,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3676,8 +3581,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3692,7 +3597,7 @@ call $~lib/array/Array#get:length local.get $4 i32.add - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -3709,39 +3614,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 11 + i32.const 12 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store - local.get $6 + local.get $5 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 i32.const 0 i32.store offset=12 - local.get $5 + local.get $4 i32.const 268435455 i32.gt_u if @@ -3754,54 +3659,54 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $5 - local.get $5 + local.get $4 + local.get $4 i32.const 8 i32.le_u select i32.const 2 i32.shl - local.tee $3 + local.tee $6 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=12 - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 + local.get $5 local.get $6 - local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 local.get $5 + local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer @@ -3813,17 +3718,22 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $6 - local.get $2 + i32.store offset=12 local.get $0 local.get $2 - call $~lib/array/Array#__get - call $~lib/array/Array#__set + call $~lib/array/Array<~lib/string/String>#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $5 + local.get $2 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 i32.const 1 i32.add @@ -3843,11 +3753,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=12 local.get $0 call $~lib/array/Array#get:length local.get $2 @@ -3855,13 +3765,18 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=8 - local.get $6 + local.get $5 local.get $3 - local.get $1 - local.get $2 - call $~lib/array/Array#__get - call $~lib/array/Array#__set + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 i32.const 1 i32.add @@ -3870,14 +3785,14 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 return end i32.const 35072 @@ -3887,7 +3802,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/arrayOfStringsFunction (param $0 i32) (param $1 i32) (result i32) + (func $export:bindings/esm/arrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3909,7 +3824,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3920,8 +3835,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3936,7 +3851,7 @@ call $~lib/array/Array#get:length local.get $4 i32.add - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -3953,39 +3868,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 12 + i32.const 11 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 i32.const 0 i32.store offset=12 - local.get $4 + local.get $5 i32.const 268435455 i32.gt_u if @@ -3998,54 +3913,54 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $4 - local.get $4 + local.get $5 + local.get $5 i32.const 8 i32.le_u select i32.const 2 i32.shl - local.tee $6 + local.tee $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=12 - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.store - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 - local.get $3 + local.get $6 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 local.get $6 + local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 + local.get $6 local.get $5 - local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer @@ -4057,22 +3972,17 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.store offset=8 - local.get $5 + local.get $6 local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#__set + local.get $0 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -4092,11 +4002,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 + i32.store offset=8 local.get $0 call $~lib/array/Array#get:length local.get $2 @@ -4104,18 +4014,13 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=12 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 i32.store offset=8 - local.get $5 + local.get $6 local.get $3 - local.get $4 - call $~lib/array/Array<~lib/string/String>#__set + local.get $1 + local.get $2 + call $~lib/array/Array#__get + call $~lib/array/Array#__set local.get $2 i32.const 1 i32.add @@ -4124,14 +4029,14 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return end i32.const 35072 @@ -4141,28 +4046,18 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/objectFunction (param $0 i32) (param $1 i32) (result i32) + (func $bindings/esm/typedarrayFunction (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 2276 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2276 i32.lt_s @@ -4174,7 +4069,21 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - block $__inlined_func$bindings/esm/PlainObject#constructor$4 (result i32) + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/typedarray/Uint64Array#constructor (result i32) + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $5 + i32.add + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4188,8 +4097,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 68 - i32.const 13 + i32.const 12 + i32.const 7 call $~lib/rt/itcms/__new local.tee $2 i32.store @@ -4198,7 +4107,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4206,187 +4115,259 @@ i32.lt_s br_if $folding-inner00 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 + i32.const 12 + i32.const 3 call $~lib/rt/itcms/__new local.tee $2 i32.store end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store16 offset=2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store8 offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + i32.store local.get $2 i32.const 0 - i32.store16 offset=18 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i64.store offset=24 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $2 i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=36 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 i32.const 0 - i32.store8 offset=40 + i32.store offset=8 + local.get $5 + i32.const 134217727 + i32.gt_u + if + i32.const 1248 + i32.const 1296 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 0 - f32.store offset=44 + local.get $5 + i32.const 3 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 - local.get $2 - f64.const 0 - f64.store offset=48 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=56 + local.get $5 + i32.store local.get $2 - i32.const 0 + local.get $5 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 0 - i32.store offset=60 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $5 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 local.get $2 - i32.const 0 - i32.store offset=64 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 - br $__inlined_func$bindings/esm/PlainObject#constructor$4 + br $__inlined_func$~lib/typedarray/Uint64Array#constructor end br $folding-inner1 end local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load8_s + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + local.get $5 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $3 - local.get $1 - i32.load8_s - i32.add - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load16_s offset=2 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $1 - i32.load16_s offset=2 - i32.add - i32.store16 offset=2 + loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/typedarray/Float32Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2276 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1552 + i32.const 1792 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $4 + i64.trunc_sat_f32_u + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 return end @@ -4397,9 +4378,20 @@ call $~lib/builtins/abort unreachable ) - (func $export:bindings/esm/internrefFunction (param $0 i32) (param $1 i32) (result i32) + (func $bindings/esm/plainFunction64 (param $0 i64) (param $1 i64) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $bindings/esm/plainFunction (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $bindings/esm/newInternref (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4414,15 +4406,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $bindings/esm/getMaxUnsigned64 (result i64) + i64.const -1 + ) + (func $bindings/esm/getMaxUnsigned32 (result i32) + i32.const -1 + ) ) diff --git a/tests/compiler/builtins.release.wat b/tests/compiler/builtins.release.wat index a22c2024c1..856132d52c 100644 --- a/tests/compiler/builtins.release.wat +++ b/tests/compiler/builtins.release.wat @@ -70,18 +70,6 @@ (export "test" (func $start:builtins~anonymous|1)) (export "memory" (memory $0)) (start $~start) - (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:builtins~anonymous|1 - ) - (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - ) - (func $~start - call $start:builtins - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -244,6 +232,19 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $start:builtins~anonymous|1 + ) + (func $~start + call $start:builtins + ) + (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + unreachable + ) + (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) (func $start:builtins global.get $~lib/memory/__stack_pointer i32.const 8 @@ -596,13 +597,9 @@ global.set $builtins/I f64.const 1.24e-322 global.set $builtins/F - memory.size - drop i32.const 1 memory.grow drop - memory.size - drop i32.const 1 memory.grow drop diff --git a/tests/compiler/call-inferred.release.wat b/tests/compiler/call-inferred.release.wat index bbbd16397b..07fa104b08 100644 --- a/tests/compiler/call-inferred.release.wat +++ b/tests/compiler/call-inferred.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -35,51 +35,6 @@ (data $9 (i32.const 1504) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1312 - call $~lib/rt/itcms/__visit - i32.const 1120 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1184 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -232,77 +187,391 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1456 - i32.const 268 - i32.const 14 + i32.const 1120 + i32.const 1184 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1120 i32.const 1456 - i32.const 270 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + local.get $4 + local.get $2 + i32.const 12 + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 i32.sub - local.set $2 - local.get $3 + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u + local.get $5 local.get $2 - i32.const 23 - i32.lt_u + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u + if + i32.const 0 + i32.const 1456 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1456 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1456 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if i32.const 0 i32.const 1456 @@ -624,119 +893,208 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $call-inferred/Baz + block $call-inferred/Bar + block $call-inferred/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $call-inferred/Foo#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s if - i32.const 0 - i32.const 1456 - i32.const 382 - i32.const 14 + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 42 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=1568 - local.tee $3 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1456 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - local.get $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1456 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1456 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -818,975 +1176,618 @@ i32.const 34304 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1456 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34304 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1456 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1456 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1312 + call $~lib/rt/itcms/__visit + i32.const 1120 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1184 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34304 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34304 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1456 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34304 + i32.sub + i32.const 1 i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u + global.set $~lib/rt/itcms/threshold + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/pinSpace + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/toSpace + i32.const 1412 + i32.const 1408 + i32.store + i32.const 1416 + i32.const 1408 + i32.store + i32.const 1408 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $call-inferred/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne if - local.get $1 + i32.const 0 + i32.const 1056 + i32.const 22 i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $call-inferred/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 23 i32.const 1 - i32.sub - local.set $1 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 31 - local.get $1 - i32.clz + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1456 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.store local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load offset=96 - else + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $call-inferred/Foo#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 42 + i32.ne + if i32.const 0 + i32.const 1056 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1120 - i32.const 1184 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$70 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1120 - i32.const 1456 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add i32.const 1 - i32.sub - else - local.get $5 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow i32.const 0 - i32.lt_s + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - unreachable + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34304 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1456 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1456 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1456 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $call-inferred/Baz - block $call-inferred/Bar - block $call-inferred/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-inferred/Foo $call-inferred/Bar $call-inferred/Baz $invalid - end - return - end - return - end - return + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1184 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34304 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34304 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1456 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + local.get $2 + local.get $2 i32.load - call $~lib/rt/itcms/__visit - return + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - return end + i32.const 10 return end - return - end - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34304 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/pinSpace - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/toSpace - i32.const 1412 - i32.const 1408 - i32.store - i32.const 1416 - i32.const 1408 - i32.store - i32.const 1408 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $call-inferred/Foo#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $call-inferred/Foo#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $call-inferred/Foo#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 34 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $call-inferred/Foo#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.lt_s - if - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 42 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/call-optional.release.wat b/tests/compiler/call-optional.release.wat index 79b66938d4..7f53c6549f 100644 --- a/tests/compiler/call-optional.release.wat +++ b/tests/compiler/call-optional.release.wat @@ -13,30 +13,6 @@ (elem $0 (i32.const 1) $call-optional/opt@varargs) (export "memory" (memory $0)) (start $~start) - (func $call-optional/opt@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const -1 - local.set $1 - end - i32.const -2 - local.set $2 - end - local.get $1 - i32.const 3 - i32.add - local.get $2 - i32.add - ) (func $~start i32.const 1 global.set $~argumentsLength @@ -95,4 +71,28 @@ unreachable end ) + (func $call-optional/opt@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const -1 + local.set $1 + end + i32.const -2 + local.set $2 + end + local.get $1 + i32.const 3 + i32.add + local.get $2 + i32.add + ) ) diff --git a/tests/compiler/call-rest.release.wat b/tests/compiler/call-rest.release.wat index d1710e2690..f36eff6343 100644 --- a/tests/compiler/call-rest.release.wat +++ b/tests/compiler/call-rest.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func (param i32 i32 i32) (result i32))) (type $1 (func (param i32 i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func)) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) - (type $9 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -77,184 +77,68 @@ (elem $0 (i32.const 1) $call-rest/fn@varargs) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1744 - call $~lib/rt/itcms/__visit - i32.const 1200 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$160 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34904 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$160 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $1 i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2096 - i32.load - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 2100 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new local.set $3 local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 local.get $3 - select - local.get $2 - i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $4 i32.store offset=8 local.get $1 local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -280,1702 +164,1840 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1472 - i32.const 268 - i32.const 14 + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1472 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 i32.const 1472 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1472 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 i32.const 1472 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1472 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.or + i32.store offset=4 local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 i32.add - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz if i32.const 0 - i32.const 1472 - i32.const 234 + i32.const 1264 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub + global.get $~lib/rt/itcms/white local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - i32.const 0 - i32.const 1472 - i32.const 251 - i32.const 14 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/count (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 + i32.store + local.get $0 + call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/Foo#sum (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or + local.tee $3 i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + local.get $3 + call $~lib/array/Array#get:length + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 + global.set $~lib/memory/__stack_pointer local.get $2 - i32.shl - i32.or - i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1472 - i32.const 382 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $3 + i32.const -4 i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 local.tee $3 + i32.const 12 + i32.lt_u if + i32.const 0 + i32.const 1472 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.shr_u + else + i32.const 31 + i32.const 1073741820 local.get $3 - local.get $1 - i32.const 16 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1472 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 34912 - i32.const 0 - i32.store - i32.const 36480 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34912 i32.add - i32.const 0 + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34912 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 34912 - i32.const 36484 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34912 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34904 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$160 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34904 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1264 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 34904 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34904 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + br $__inlined_func$~lib/rt/itcms/Object#unlink$160 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2096 + i32.load + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2100 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $call-rest/Foo + block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + call $~lib/array/Array~visit + return end - global.get $~lib/rt/tlsf/ROOT - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1472 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $1 - i32.ctz - local.tee $1 + local.get $0 + i32.load offset=12 i32.const 2 i32.shl i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.ctz - local.get $1 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - else - i32.const 0 + global.set $~lib/memory/__stack_pointer + return end + unreachable end + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - i32.const 1200 - i32.const 1264 - i32.const 261 - i32.const 31 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + i32.const 1056 + i32.const 1120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 16 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/fn@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - i32.const 1200 - i32.const 1472 - i32.const 461 - i32.const 29 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end unreachable end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if i32.const 0 - i32.const 1472 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1472 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.const 5 + i32.const 1168 + call $~lib/rt/__newArray + local.tee $2 + i32.store end - local.get $4 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/tlsf/removeBlock + i32.store offset=4 + local.get $1 local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + call $call-rest/fn + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 15 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $call-rest/fn (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s if - i32.const 0 - i32.const 1472 - i32.const 361 - i32.const 14 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $0 + i32.add + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $call-rest/Foo#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer i32.const 16 - i32.ge_u - if + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or + i32.store offset=4 + local.get $2 + i32.const 0 i32.store local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=12 local.get $3 - i32.const 4 - i32.sub + i32.const 0 i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + local.get $0 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 local.get $2 - local.get $6 - i32.const -2 - i32.and + local.get $3 i32.store local.get $2 - i32.const 4 + local.get $3 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#get:length + local.set $7 + loop $for-loop|0 + local.get $0 + local.get $7 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $6 + i32.load offset=12 + local.tee $4 + i32.const 1 + i32.add + local.tee $5 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + return end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 + i32.const 34928 + i32.const 34976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.eqz + i32.const 256 + i32.lt_u if - return + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - local.get $0 + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 1264 - i32.const 295 + i32.const 1472 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const 3 + i32.const -1 + local.get $1 + i32.shl i32.and - i32.eq - if + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq + local.tee $1 + if (result i32) local.get $0 - i32.const 3 - i32.eq - i32.and + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end end ) - (func $~lib/array/Array~visit (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 34912 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36480 + i32.const 0 i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner0 - block $invalid - block $~lib/array/Array<~lib/string/String> - block $call-rest/Foo - block $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32?%2C...~lib/array/Array%29=>i32> $call-rest/Foo $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.load offset=12 i32.const 2 i32.shl + i32.const 34912 i32.add - local.set $2 - loop $while-continue|0 + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - local.get $2 + i32.const 16 i32.lt_u if + local.get $0 + i32.const 4 + i32.shl local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end + i32.add + i32.const 2 + i32.shl + i32.const 34912 + i32.add + i32.const 0 + i32.store offset=96 local.get $1 - i32.const 4 + i32.const 1 i32.add local.set $1 - br $while-continue|0 + br $for-loop|1 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - end - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:call-rest + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34912 + i32.const 36484 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34912 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 1056 - i32.const 1120 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $call-rest/fn (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.and + local.get $3 + i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 + local.tee $3 i32.const 1 - i32.add - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.or + i32.or i32.store local.get $1 - call $~lib/array/Array#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $0 - i32.add - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $call-rest/fn@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1744 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - i32.const 1168 - call $~lib/rt/__newArray - local.tee $2 - i32.store end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $1 - local.get $2 - call $call-rest/fn - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) @@ -2108,8 +2130,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/array/Array~visit (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2131,206 +2152,81 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1056 - i32.const 1120 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $call-rest/Foo#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=12 - local.get $3 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 2136 + i32.lt_s + if + i32.const 34928 + i32.const 34976 i32.const 1 - call $~lib/array/Array#__set - local.get $3 i32.const 1 - local.get $0 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $2 - local.get $3 - i32.store - local.get $2 - local.get $3 - call $~lib/rt/itcms/__link - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/array/Array#get:length - local.set $7 - loop $for-loop|0 - local.get $0 - local.get $7 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load - local.tee $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $6 - i32.load offset=12 - local.tee $4 - i32.const 1 - i32.add - local.tee $5 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1056 + i32.const 1120 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 end - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $call-rest/Foo#constructor@varargs (param $0 i32) (result i32) (local $1 i32) @@ -2362,129 +2258,297 @@ global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + i32.const 1792 + call $~lib/rt/__newArray + local.tee $1 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $call-rest/Foo#constructor + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:call-rest + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34904 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34904 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34904 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - unreachable end - i32.const 0 - local.set $0 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 5 - i32.const 1792 - call $~lib/rt/__newArray - local.tee $1 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $call-rest/Foo#constructor - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $call-rest/Foo#sum (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - local.get $3 - call $~lib/array/Array#get:length - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - local.get $3 - local.get $1 - call $~lib/array/Array#__get - local.get $2 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $call-rest/count (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:call-rest (local $0 i32) @@ -2898,67 +2962,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2136 - i32.lt_s - if - i32.const 34928 - i32.const 34976 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $4 - memory.copy - end - local.get $3 - i32.store - i32.const 16 - local.get $1 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/call-super.release.wat b/tests/compiler/call-super.release.wat index 0c67fa96d2..003836b8dc 100644 --- a/tests/compiler/call-super.release.wat +++ b/tests/compiler/call-super.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -35,728 +35,1066 @@ (data $9 (i32.const 1488) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.eqz + i32.const 1073741804 + i32.ge_u if - return + i32.const 1104 + i32.const 1168 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$158 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34316 - i32.lt_u - i32.and + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state i32.eqz if - i32.const 0 - i32.const 1168 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$158 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if + local.get $2 i32.const 0 - i32.const 1168 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1488 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 2 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 i32.shl - i32.const 1492 i32.add - i32.load - i32.const 32 - i32.and + global.set $~lib/rt/itcms/threshold end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1104 i32.const 1440 - i32.const 268 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 + local.get $4 + local.get $2 i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1440 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1440 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub local.get $1 - i32.store + i32.store offset=12 local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const -4 + i32.and + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 + i32.add + global.set $~lib/rt/itcms/total local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/white local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 - i32.const 4 - i32.add local.get $1 - i32.gt_u + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter end - local.get $3 + block $__inlined_func$~lib/rt/itcms/Object#unlink$158 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34316 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$158 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1488 i32.load - local.set $4 - local.get $5 - local.set $1 + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and end - else + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.sub + i32.load local.tee $3 - i32.const 20 - i32.lt_u + i32.const 1 + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add local.get $3 - i32.add + i32.const -4 + i32.and local.tee $3 - i32.const 2 - i32.store - local.get $0 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s + i32.const 256 + i32.lt_u if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s + local.get $3 + i32.const 4 + i32.shr_u else - i32.const 0 - end - if - unreachable + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $call-super/I + block $call-super/J + block $call-super/G + block $call-super/H + block $call-super/E + block $call-super/F + block $call-super/C + block $call-super/D + block $call-super/A + block $call-super/B + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable end i32.const 34320 i32.const 0 @@ -805,18 +1143,215 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|0 + end + end + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end - i32.const 34320 - i32.const 35892 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34320 - global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + if + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + call $start:call-super ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -970,554 +1505,113 @@ global.get $~lib/rt/itcms/visitCount return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34316 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34316 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 + i32.const 1168 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1104 - i32.const 1168 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1104 - i32.const 1440 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 + i32.const 34316 i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add - i32.const 1 i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34316 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end + i32.const 10 + return end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1440 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/rt/itcms/state end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 i32.const 0 - local.get $0 - memory.fill - local.get $1 ) (func $start:call-super (local $0 i32) @@ -2231,97 +2325,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $call-super/I - block $call-super/J - block $call-super/G - block $call-super/H - block $call-super/E - block $call-super/F - block $call-super/C - block $call-super/D - block $call-super/A - block $call-super/B - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:call-super - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - if - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/class-implements.release.wat b/tests/compiler/class-implements.release.wat index 405b45c818..54da044a10 100644 --- a/tests/compiler/class-implements.release.wat +++ b/tests/compiler/class-implements.release.wat @@ -1,10 +1,10 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -42,104 +42,372 @@ (data $9 (i32.const 1504) "\15\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $class-implements/a - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-implements/c - local.tee $0 + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $class-implements/d - local.tee $0 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - global.get $class-implements/e - local.tee $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + call $~lib/rt/tlsf/initialize end - global.get $class-implements/f - local.tee $0 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable end - global.get $class-implements/g - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - global.get $class-implements/h - local.tee $0 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - local.get $0 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $class-implements/I2#get:foo@override (param $0 i32) (result i32) + block $case5 + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + block $tablify|0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.sub + br_table $case4 $tablify|0 $case0 $case1 $case5 $case2 $case3 $tablify|0 + end + unreachable + end + local.get $0 + i32.load + return + end + local.get $0 + i32.load + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + i32.load + return + end + local.get $0 + call $class-implements/B2#get:foo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 i32.const 20 i32.sub local.tee $1 @@ -281,71 +549,195 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (func $class-implements/B3#get:foo (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/I2#set:foo@override (param $0 i32) (param $1 i32) + block $folding-inner0 + block $case5 + block $case3 + block $case2 + block $tablify|0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.sub + br_table $folding-inner0 $tablify|0 $folding-inner0 $folding-inner0 $case5 $case2 $case3 $tablify|0 + end + unreachable + end + local.get $0 + local.get $1 + call $class-implements/B3#set:foo + return + end + local.get $0 + local.get $1 + call $class-implements/B3#set:foo + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 i32.lt_u local.get $2 i32.const 23 @@ -673,1246 +1065,675 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-implements/B4 + block $class-implements/B3 + block $class-implements/B2 + block $class-implements/A4 + block $class-implements/A3 + block $class-implements/I2 + block $class-implements/A2 + block $class-implements/K + block $class-implements/G + block $class-implements/F + block $class-implements/E + block $class-implements/J + block $class-implements/D + block $class-implements/B + block $class-implements/C + block $class-implements/I + block $class-implements/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $class-implements/F#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34368 - i32.const 0 - i32.store - i32.const 35936 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34368 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34368 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34368 - i32.const 35940 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34368 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34360 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34360 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34360 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1073741804 - i32.ge_u + call $class-implements/D#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/D#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.eqz if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/tlsf/ROOT - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 16 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/B2#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.eqz if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-implements/A2#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1592 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 361 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 + local.get $1 i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u + local.set $1 else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 i32.const 4 - i32.add + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 7 + i32.sub + local.set $2 end - local.get $2 local.get $1 - i32.store offset=12 + i32.const 16 + i32.lt_u local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 local.get $2 - local.get $3 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.const -1 local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 + i32.shl i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $class-implements/I2#get:foo@override (param $0 i32) (result i32) - block $default - block $case5 - block $case4 - block $case3 - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 14 - i32.sub - br_table $case4 $default $case0 $case1 $case5 $case2 $case3 $default - end - local.get $0 - i32.load - return - end - local.get $0 - i32.load - return - end - local.get $0 - call $class-implements/B3#get:foo - return - end - local.get $0 - call $class-implements/B3#get:foo - return - end - local.get $0 - i32.load - return - end - local.get $0 - call $class-implements/B2#get:foo - return - end - unreachable - ) - (func $class-implements/I2#set:foo@override (param $0 i32) (param $1 i32) - block $folding-inner0 - block $default - block $case5 - block $case3 - block $case2 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 14 - i32.sub - br_table $folding-inner0 $default $folding-inner0 $folding-inner0 $case5 $case2 $case3 $default - end - local.get $0 - local.get $1 - call $class-implements/B3#set:foo - return - end - local.get $0 - local.get $1 - call $class-implements/B3#set:foo - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 + local.get $2 + i32.ctz local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end - unreachable end - local.get $0 - local.get $1 - i32.store ) - (func $class-implements/B2#get:foo@override (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - block $default - block $case1 + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34368 + i32.const 0 + i32.store + i32.const 35936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $1 - i32.const 19 - i32.ne - if + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - i32.const 20 - i32.eq - br_if $case1 - br $default - end - local.get $0 - call $class-implements/B3#get:foo - return - end - local.get $0 - call $class-implements/B3#get:foo - return - end - local.get $0 - call $class-implements/B2#get:foo - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-implements/B4 - block $class-implements/B3 - block $class-implements/B2 - block $class-implements/A4 - block $class-implements/A3 - block $class-implements/I2 - block $class-implements/A2 - block $class-implements/K - block $class-implements/G - block $class-implements/F - block $class-implements/E - block $class-implements/J - block $class-implements/D - block $class-implements/B - block $class-implements/C - block $class-implements/I - block $class-implements/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-implements/A $class-implements/I $class-implements/C $class-implements/B $class-implements/D $class-implements/J $class-implements/E $class-implements/F $class-implements/G $class-implements/K $class-implements/A2 $class-implements/I2 $class-implements/A3 $class-implements/A4 $class-implements/B2 $class-implements/B3 $class-implements/B4 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - return end - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - return end - unreachable - ) - (func $~start - call $start:class-implements + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT ) - (func $class-implements/D#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.eqz + i32.load offset=1568 + local.tee $3 if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $class-implements/F#constructor (result i32) + (func $~lib/rt/itcms/visitRoots (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s + (local $1 i32) + global.get $class-implements/a + local.tee $0 if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 11 - call $~lib/rt/itcms/__new + global.get $class-implements/c local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-implements/D#constructor + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/d local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $class-implements/A2#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz + global.get $class-implements/e + local.tee $0 if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor + global.get $class-implements/f local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/g + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/h + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) - (func $class-implements/B2#constructor (param $0 i32) (result i32) + (func $class-implements/B3#set:foo (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1927,37 +1748,47 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 18 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/object/Object#constructor - local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.const 3 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + ) + (func $class-implements/B2#get:foo@override (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case1 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $1 + i32.const 19 + i32.ne + if + local.get $1 + i32.const 20 + i32.eq + br_if $case1 + br $default + end + local.get $0 + call $class-implements/B3#get:foo + return + end + local.get $0 + call $class-implements/B3#get:foo + return + end local.get $0 + call $class-implements/B2#get:foo ) (func $class-implements/B2#get:foo (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1988,34 +1819,268 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $class-implements/B3#get:foo (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + (func $~start + call $start:class-implements + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34360 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34360 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34360 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:class-implements (local $0 i32) @@ -2167,22 +2232,19 @@ i32.const 0 call $class-implements/D#constructor global.set $class-implements/d - block $__inlined_func$class-implements/D#foo@override$163 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-implements/d - local.tee $0 - i32.store - i32.const 4 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 11 - i32.eq - br_if $__inlined_func$class-implements/D#foo@override$163 - drop - i32.const 3 - end + global.get $~lib/memory/__stack_pointer + global.get $class-implements/d + local.tee $0 + i32.store + i32.const 4 + i32.const 3 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + select i32.const 3 i32.ne if @@ -2224,22 +2286,19 @@ global.set $~lib/memory/__stack_pointer local.get $0 global.set $class-implements/e - block $__inlined_func$class-implements/D#foo@override$165 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-implements/e - local.tee $0 - i32.store - i32.const 4 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 11 - i32.eq - br_if $__inlined_func$class-implements/D#foo@override$165 - drop - i32.const 3 - end + global.get $~lib/memory/__stack_pointer + global.get $class-implements/e + local.tee $0 + i32.store + i32.const 4 + i32.const 3 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + select i32.const 3 i32.ne if @@ -2257,22 +2316,19 @@ i32.store call $class-implements/F#constructor global.set $class-implements/g - block $__inlined_func$class-implements/D#foo@override$166 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-implements/g - local.tee $0 - i32.store - i32.const 4 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 11 - i32.eq - br_if $__inlined_func$class-implements/D#foo@override$166 - drop - i32.const 3 - end + global.get $~lib/memory/__stack_pointer + global.get $class-implements/g + local.tee $0 + i32.store + i32.const 4 + i32.const 3 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 11 + i32.eq + select i32.const 4 i32.ne if @@ -2289,39 +2345,33 @@ global.get $class-implements/h local.tee $0 i32.store - block $__inlined_func$class-implements/I#foo@override$167 - block $default12 - block $case3 - block $case2 - block $case1 - block $case013 + block $__inlined_func$class-implements/I#foo@override$167 (result i32) + block $case3 + block $case2 + block $case1 + block $case013 + block $tablify|0 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case1 $default12 $case2 $default12 $case3 $default12 $case3 $case013 $default12 + br_table $case1 $tablify|0 $case2 $tablify|0 $case3 $tablify|0 $case3 $case013 $tablify|0 end - i32.const 4 - local.set $0 - br $__inlined_func$class-implements/I#foo@override$167 + unreachable end - i32.const 1 - local.set $0 + i32.const 4 br $__inlined_func$class-implements/I#foo@override$167 end - i32.const 2 - local.set $0 + i32.const 1 br $__inlined_func$class-implements/I#foo@override$167 end - i32.const 3 - local.set $0 + i32.const 2 br $__inlined_func$class-implements/I#foo@override$167 end - unreachable + i32.const 3 end - local.get $0 i32.const 4 i32.ne if @@ -2364,37 +2414,32 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$class-implements/J#foo@override$169 - block $default14 - block $case315 - block $case216 - block $case117 - block $case018 + block $__inlined_func$class-implements/J#foo@override$169 (result i32) + block $case315 + block $case216 + block $case117 + block $case018 + block $tablify|00 local.get $0 i32.const 8 i32.sub i32.load i32.const 8 i32.sub - br_table $case216 $default14 $case216 $case117 $case315 $case018 $default14 + br_table $case216 $tablify|00 $case216 $case117 $case315 $case018 $tablify|00 end unreachable end - i32.const 4 - local.set $0 - br $__inlined_func$class-implements/J#foo@override$169 + unreachable end - i32.const 3 - local.set $0 + i32.const 4 br $__inlined_func$class-implements/J#foo@override$169 end - i32.const 1 - local.set $0 + i32.const 3 br $__inlined_func$class-implements/J#foo@override$169 end - unreachable + i32.const 1 end - local.get $0 i32.const 1 i32.ne if @@ -2976,69 +3021,4 @@ call $~lib/builtins/abort unreachable ) - (func $class-implements/B3#set:foo (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1592 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/class-overloading-cast.release.wat b/tests/compiler/class-overloading-cast.release.wat index d40d976f0e..a06c23f70d 100644 --- a/tests/compiler/class-overloading-cast.release.wat +++ b/tests/compiler/class-overloading-cast.release.wat @@ -1,12 +1,12 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -48,429 +48,173 @@ (data $13 (i32.const 1648) "\0e\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) - global.get $class-overloading-cast/v - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading-cast/v2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading-cast/v3 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading-cast/c - local.tee $0 + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 20 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - return + call $~lib/rt/tlsf/initialize end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.eqz if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$141 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34476 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$141 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 + local.get $3 local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1648 - i32.load - i32.gt_u + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 - i32.shl - i32.const 1652 - i32.add - i32.load - i32.const 32 - i32.and end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select local.get $2 - i32.or - i32.store offset=4 local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 i32.const -4 i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 + i32.const 28 i32.lt_u - i32.and - i32.eqz if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/tlsf/removeBlock local.get $1 i32.load local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load i32.const -4 i32.and - i32.add + i32.const 28 + i32.sub local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 + i32.const 2 i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 i32.add local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and i32.store local.get $1 i32.const 4 @@ -480,640 +224,854 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 + local.tee $2 + local.get $2 i32.load - local.tee $6 - i32.const 1 + i32.const -3 i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 i32.store end - local.get $4 - local.get $2 - i32.const 2 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.store offset=4 local.get $1 - i32.const 4 - i32.add local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub + i32.store offset=8 + local.get $2 local.get $1 - i32.store local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u + i32.load offset=4 + i32.const 3 i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 + i32.or i32.store offset=4 + local.get $0 local.get $1 - local.get $3 i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and i32.const 4 - i32.shl - local.get $2 i32.add - i32.const 2 - i32.shl i32.add + global.set $~lib/rt/itcms/total local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/white local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 + global.get $~lib/rt/itcms/iter i32.eq if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34480 - i32.const 0 - i32.store - i32.const 36048 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34480 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + block $__inlined_func$~lib/rt/itcms/Object#unlink$141 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if local.get $1 - i32.const 16 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34476 i32.lt_u + i32.and + i32.eqz if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34480 - i32.add i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$141 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 + else + local.get $0 + i32.const 1648 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1652 i32.add - local.set $0 - br $for-loop|0 + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 34480 - i32.const 36052 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34480 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + if + i32.const 34496 + i32.const 34544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq if - local.get $0 - global.set $~lib/rt/itcms/iter + local.get $2 + i32.const 8 + i32.add + local.set $2 local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 end end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34476 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and + end + block $__inlined_func$~lib/util/string/compareImpl$87 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + br_if $__inlined_func$~lib/util/string/compareImpl$87 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount - return + i32.const 0 + local.set $3 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1708 + i32.lt_s + if + i32.const 34496 + i32.const 34544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - i32.const 34476 - i32.lt_u + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total local.get $0 i32.load - i32.const -4 + i32.const -2 + local.get $2 + i32.rotl i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34476 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $class-overloading-cast/D + block $class-overloading-cast/A<~lib/string/String> + block $class-overloading-cast/C + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $"class-overloading-cast/B" + block $class-overloading-cast/A + block $"class-overloading-cast/B" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + return end + return end - i32.const 10 return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1172,298 +1130,268 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock + memory.size local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.const 16 - i32.shl - i32.const 4 i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34480 + i32.const 0 + i32.store + i32.const 36048 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34480 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34480 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end + i32.const 34480 + i32.const 36052 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34480 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load - local.tee $3 - i32.const -4 + i32.const 19 + i32.add + i32.const -16 i32.and - i32.const 28 + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $1 local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else + i32.add local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const -2 - i32.and - i32.store local.get $1 - i32.const 4 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $0 local.get $1 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total local.get $1 - i32.load - i32.const -4 - i32.and i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $class-overloading-cast/D - block $class-overloading-cast/A<~lib/string/String> - block $class-overloading-cast/C - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $"class-overloading-cast/B" - block $class-overloading-cast/A - block $"class-overloading-cast/B" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"class-overloading-cast/B" $class-overloading-cast/A $"class-overloading-cast/B" $"class-overloading-cast/B" $class-overloading-cast/A $class-overloading-cast/C $class-overloading-cast/A<~lib/string/String> $class-overloading-cast/D $"class-overloading-cast/B" $class-overloading-cast/A $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-overloading-cast/v + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading-cast/v3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - unreachable - ) - (func $~start - global.get $~started + global.get $class-overloading-cast/c + local.tee $0 if - return + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end end - i32.const 1 - global.set $~started - call $start:class-overloading-cast ) (func $class-overloading-cast/A#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -1507,166 +1435,273 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1708 - i32.lt_s - if - i32.const 34496 - i32.const 34544 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq + (func $~start + global.get $~started if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 return end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + i32.const 1 + global.set $~started + call $start:class-overloading-cast + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34476 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$87 - loop $while-continue|1 + local.get $0 + i32.const 34476 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34476 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$87 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:class-overloading-cast @@ -1838,11 +1873,11 @@ local.get $0 global.set $class-overloading-cast/v3 global.get $~lib/memory/__stack_pointer + global.get $class-overloading-cast/v + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer block $__inlined_func$class-overloading-cast/A#foo@override$136 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-overloading-cast/v - local.tee $0 - i32.store offset=4 block $default block $case1 local.get $0 @@ -1900,22 +1935,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $__inlined_func$class-overloading-cast/A#foo@override$137 (result i32) - global.get $~lib/memory/__stack_pointer - global.get $class-overloading-cast/v3 - local.tee $0 - i32.store offset=4 - i32.const 1488 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 7 - i32.eq - br_if $__inlined_func$class-overloading-cast/A#foo@override$137 - drop - i32.const 1456 - end + global.get $class-overloading-cast/v3 + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.const 1456 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 7 + i32.eq + select local.tee $0 i32.store local.get $0 @@ -2157,38 +2189,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1708 - i32.lt_s - if - i32.const 34496 - i32.const 34544 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/class-overloading.release.wat b/tests/compiler/class-overloading.release.wat index 02caf42072..5552f940ac 100644 --- a/tests/compiler/class-overloading.release.wat +++ b/tests/compiler/class-overloading.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32))) + (type $1 (func (param i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $class-overloading/which (mut i32) (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -58,441 +58,335 @@ (data $17 (i32.const 1792) "\12\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $class-overloading/which - local.tee $0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $class-overloading/a - local.tee $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - global.get $class-overloading/c - local.tee $0 - if + block $folding-inner0 + local.get $1 + i32.eqz local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/ia - local.tee $0 - if + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/ic - local.tee $0 - if + i32.store local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $class-overloading/b2 - local.tee $0 - if + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq + i32.eqz if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$171 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz + loop $do-loop|0 + local.get $2 + i64.load local.get $1 - i32.const 34636 - i32.lt_u - i32.and - i32.eqz + i64.load + i64.eq if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$171 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1792 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/util/string/compareImpl$95 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$95 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end - local.get $0 - i32.const 2 + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 i32.shl - i32.const 1796 i32.add - i32.load - i32.const 32 - i32.and + global.set $~lib/rt/itcms/threshold end - local.set $3 + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 local.get $2 - i32.load offset=8 - local.set $0 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 local.get $3 + i32.gt_s select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.load - local.tee $3 - i32.const 1 + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1424 - i32.const 268 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 i32.const -4 i32.and - local.tee $3 - i32.const 12 - i32.lt_u + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u if - i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u - select + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 local.get $4 i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else local.get $1 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 + i32.const -2 i32.and - i32.add - local.tee $3 i32.store local.get $1 i32.const 4 @@ -502,640 +396,807 @@ i32.const -4 i32.and i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 + local.tee $2 + local.get $2 i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 + i32.const -3 i32.and - i32.add - local.tee $3 i32.store end - local.get $4 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 local.get $2 - i32.const 2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 i32.const 4 i32.add - local.get $2 i32.add - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub + global.set $~lib/rt/itcms/total local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const 20 i32.add local.tee $0 + i32.const 0 + i32.const 0 + memory.fill local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1424 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/white local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 - i32.const 4 - i32.add local.get $1 - i32.gt_u + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter end - local.get $3 + block $__inlined_func$~lib/rt/itcms/Object#unlink$171 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34636 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$171 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1792 i32.load - local.set $4 - local.get $5 - local.set $1 + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and end - else - local.get $0 - i32.const 1572 - i32.add + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-overloading/A#a@override (param $0 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 5 + i32.sub + br_table $case0 $case1 $case0 $case0 $case2 $default + end + i32.const 1520 + global.set $class-overloading/which + return + end + local.get $0 + call $class-overloading/C#a + return + end + i32.const 1648 + global.set $class-overloading/which return end + i32.const 1488 + global.set $class-overloading/which + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - local.get $4 - i32.const 2 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 8 - i32.sub + i32.const -4 + i32.and local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 34640 - i32.const 0 - i32.store - i32.const 36208 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34640 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34640 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 34640 - i32.const 36212 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34640 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34636 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading/A1 + block $class-overloading/B1 + block $class-overloading/B2 + block $class-overloading/A2 + block $class-overloading/CC + block $class-overloading/IC + block $class-overloading/CA + block $class-overloading/IA + block $class-overloading/F + block $class-overloading/E + block $class-overloading/D + block $class-overloading/C + block $class-overloading/B + block $class-overloading/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 + return end + return end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + return end - global.get $~lib/rt/itcms/visitCount return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + return + end + unreachable + ) + (func $class-overloading/B#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34636 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34636 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 0 + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1194,419 +1255,324 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock + memory.size local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.const 16 - i32.shl - i32.const 4 i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34640 + i32.const 0 + i32.store + i32.const 36208 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34640 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1424 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34640 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end + i32.const 34640 + i32.const 36212 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34640 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1424 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 + i32.const 19 + i32.add + i32.const -16 i32.and - i32.const 28 + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 i32.const 4 i32.add local.get $1 - i32.load - i32.const -4 - i32.and + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $0 local.get $1 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total local.get $1 - i32.load - i32.const -4 - i32.and i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $class-overloading/A#a@override (param $0 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 5 - i32.sub - br_table $case0 $case1 $case0 $case0 $case2 $default - end - i32.const 1520 - global.set $class-overloading/which - return - end - local.get $0 - call $class-overloading/C#a - return - end - i32.const 1648 - global.set $class-overloading/which - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $class-overloading/which + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 1488 - global.set $class-overloading/which - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-overloading/A1 - block $class-overloading/B1 - block $class-overloading/B2 - block $class-overloading/A2 - block $class-overloading/CC - block $class-overloading/IC - block $class-overloading/CA - block $class-overloading/IA - block $class-overloading/F - block $class-overloading/E - block $class-overloading/D - block $class-overloading/C - block $class-overloading/B - block $class-overloading/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + global.get $class-overloading/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ia + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ic + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/b2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - return end - unreachable - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:class-overloading ) - (func $class-overloading/B#constructor (param $0 i32) (result i32) - (local $1 i32) + (func $class-overloading/E#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1868 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1868 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor + call $~lib/rt/itcms/__new local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return end - i32.const 34656 - i32.const 34704 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/D#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $class-overloading/D#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1626,273 +1592,342 @@ i64.const 0 i64.store local.get $0 - local.get $1 - i32.eq + i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/B#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $class-overloading/C#a (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 34656 + i32.const 34704 i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1520 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store + i32.const 1520 + i32.const 1520 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 1616 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:class-overloading + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 - i32.const 8 - i32.add - local.set $2 + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i32.const 8 - i32.add - local.set $1 local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34636 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - block $__inlined_func$~lib/util/string/compareImpl$95 - loop $while-continue|1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34636 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34636 + i32.ge_u if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$95 local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $class-overloading/C#a (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 1520 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - i32.const 1520 - i32.store - i32.const 1520 - i32.const 1520 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1552 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 1616 - global.set $class-overloading/which - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $class-overloading/D#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-overloading/B#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $class-overloading/E#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $class-overloading/D#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) (func $start:class-overloading (local $0 i32) @@ -2825,31 +2860,27 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@override$168 - block $default88 - block $case189 + block $case189 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 11 + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 11 - i32.ne - if - local.get $0 - i32.const 13 - i32.eq - br_if $case189 - br $default88 - end - i32.const 1680 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$168 + i32.const 13 + i32.eq + br_if $case189 + unreachable end - i32.const 1712 + i32.const 1680 global.set $class-overloading/which br $__inlined_func$class-overloading/IA#foo@override$168 end - unreachable + i32.const 1712 + global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer global.get $class-overloading/which @@ -2904,31 +2935,27 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@override$170 - block $default91 - block $case192 + block $case192 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 11 + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 11 - i32.ne - if - local.get $0 - i32.const 13 - i32.eq - br_if $case192 - br $default91 - end - i32.const 1680 - global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@override$170 + i32.const 13 + i32.eq + br_if $case192 + unreachable end - i32.const 1712 + i32.const 1680 global.set $class-overloading/which br $__inlined_func$class-overloading/IA#foo@override$170 end - unreachable + i32.const 1712 + global.set $class-overloading/which end global.get $~lib/memory/__stack_pointer global.get $class-overloading/which @@ -3148,38 +3175,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1868 - i32.lt_s - if - i32.const 34656 - i32.const 34704 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/class-override.release.wat b/tests/compiler/class-override.release.wat index b1418a45d3..470d06af94 100644 --- a/tests/compiler/class-override.release.wat +++ b/tests/compiler/class-override.release.wat @@ -1,12 +1,12 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32) (result i32))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -37,57 +37,6 @@ (export "fn" (func $class-override/fn)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $class-override/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -240,122 +189,352 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + local.get $1 + i32.load + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load offset=8 - local.set $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load offset=4 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq + i32.const 16 + i32.ge_u if local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 local.get $2 i32.const 2 @@ -632,26 +811,200 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-override/B + block $class-override/C + block $class-override/D + block $class-override/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and i32.const 4 i32.sub @@ -746,669 +1099,168 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $class-override/x + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34320 - i32.const 0 - i32.store - i32.const 35888 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34320 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34320 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34320 - i32.const 35892 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34320 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34308 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34308 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34308 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 + ) + (func $class-override/fn (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1540 i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and + global.get $~lib/memory/__stack_pointer + global.get $class-override/x + local.tee $1 i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $class-override/B - block $class-override/C - block $class-override/D - block $class-override/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-override/A $class-override/D $class-override/C $class-override/B $invalid - end - return - end - return - end - return - end - local.get $0 + block $__inlined_func$class-override/A#f@override$126 + block $default + block $case1 + block $case0 + local.get $1 + i32.const 8 + i32.sub i32.load - call $~lib/rt/itcms/__visit - return + i32.const 5 + i32.sub + br_table $case1 $case1 $case0 $default end - return + local.get $1 + local.get $0 + call $class-override/B#f + local.set $0 + br $__inlined_func$class-override/A#f@override$126 end - return + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $class-override/B#f + i32.const 100 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$class-override/A#f@override$126 end - return + local.get $0 + i32.const 1 + i32.add + local.set $0 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) + (func $class-override/B#f (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1540 + i32.lt_s + if + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 11 + i32.add + ) (func $~start (local $0 i32) (local $1 i32) @@ -1561,167 +1413,316 @@ local.tee $0 i32.store end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-override/x + i32.const 0 + call $class-override/fn + i32.const 111 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$start:class-override + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34308 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - global.set $class-override/x - i32.const 0 - call $class-override/fn - i32.const 111 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and i32.ne if i32.const 0 - i32.const 1456 - i32.const 24 - i32.const 1 + i32.const 1120 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - br $__inlined_func$start:class-override - end - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $class-override/fn (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $class-override/x - local.tee $1 - i32.store - block $__inlined_func$class-override/A#f@override$126 - block $default - block $case1 - block $case0 - local.get $1 - i32.const 8 - i32.sub - i32.load - i32.const 5 - i32.sub - br_table $case1 $case1 $case0 $default - end - local.get $1 - local.get $0 - call $class-override/B#f - local.set $0 - br $__inlined_func$class-override/A#f@override$126 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1540 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 34308 + i32.lt_u + if + local.get $0 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 + i32.store offset=4 local.get $0 - call $class-override/B#f - i32.const 100 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$class-override/A#f@override$126 + local.tee $0 + i32.const 34308 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end - local.get $0 - i32.const 1 - i32.add - local.set $0 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $class-override/B#f (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1540 - i32.lt_s - if - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.const 11 - i32.add ) ) diff --git a/tests/compiler/class-static-function.release.wat b/tests/compiler/class-static-function.release.wat index 10a8811e24..2cec4c8884 100644 --- a/tests/compiler/class-static-function.release.wat +++ b/tests/compiler/class-static-function.release.wat @@ -1,7 +1,7 @@ (module (type $0 (func (result i32))) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func)) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33916)) (memory $0 1) @@ -13,9 +13,6 @@ (elem $0 (i32.const 1) $class-static-function/Example.staticFunc) (export "memory" (memory $0)) (start $~start) - (func $class-static-function/Example.staticFunc (result i32) - i32.const 42 - ) (func $~start global.get $~lib/memory/__stack_pointer i32.const 4 @@ -47,4 +44,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $class-static-function/Example.staticFunc (result i32) + i32.const 42 + ) ) diff --git a/tests/compiler/class.release.wat b/tests/compiler/class.release.wat index 992b686367..7a93b429d2 100644 --- a/tests/compiler/class.release.wat +++ b/tests/compiler/class.release.wat @@ -39,185 +39,6 @@ (export "memory" (memory $0)) (export "test" (func $export:class/test)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$139 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34336 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$139 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1536 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -242,330 +63,387 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$71 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1056 i32.const 1392 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -573,520 +451,575 @@ if i32.const 0 i32.const 1392 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + local.tee $1 + i32.load offset=96 + i32.eq if - local.get $3 - i32.const 4 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end - else + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.const 1572 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $4 local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 + i32.const 4 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or + local.get $1 i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $3 i32.store offset=8 - local.get $1 - i32.const 4 - i32.add local.get $3 - i32.add - local.tee $3 - i32.const 2 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - local.get $3 - i32.store offset=1568 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - i32.const 34336 - i32.const 0 - i32.store - i32.const 35904 - i32.const 0 - i32.store - loop $for-loop|0 + block $__inlined_func$~lib/rt/itcms/Object#unlink$139 local.get $0 - i32.const 23 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.const 2 - i32.shl + i32.load offset=8 + i32.eqz + local.get $0 i32.const 34336 - i32.add - i32.const 0 - i32.store offset=4 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$139 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $class/GenericInitializer + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid + end + return + end + return + end + return + end local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34336 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.load + call $~lib/rt/itcms/__visit + return end + return end local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.load + call $~lib/rt/itcms/__visit + return end - end - i32.const 34336 - i32.const 35908 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34336 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34336 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if local.get $0 + i32.const 20 + i32.sub i32.load offset=4 - local.tee $1 - i32.const -4 + i32.const 3 i32.and - global.set $~lib/rt/itcms/iter + local.tee $0 global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34336 - i32.lt_u + i32.eq if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 + local.get $1 + call $~lib/rt/itcms/Object#makeGray else - global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq local.get $0 - i32.load - i32.const -4 + i32.const 3 + i32.eq i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34336 - i32.ge_u if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/itcms/Object#makeGray end end - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1216,373 +1149,627 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$71 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if - global.get $~lib/rt/itcms/total - i32.const 1 + local.get $0 + i32.const 4 i32.shl - i32.const 1024 + local.get $1 i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$71 + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl + local.get $0 + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold + local.set $0 + br $for-loop|0 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 1056 + i32.const 0 i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 local.get $5 + local.set $1 end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 + else + local.get $0 + i32.const 1572 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 499 - i32.const 16 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $5 local.get $2 - i32.load - i32.const -4 + i32.wrap_i64 + i32.const -16 i32.and - i32.gt_u + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end + local.get $1 local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const 2 i32.and - local.get $5 + local.get $3 + i32.const 8 i32.sub local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white + i32.const 1 i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + local.get $3 + i32.store offset=1568 local.get $0 local.get $1 - i32.store - local.get $1 - if + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34336 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34336 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34336 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34336 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $export:class/test (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_s offset=4 + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_s offset=6 + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store16 offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + i32.store8 offset=6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $class/testGenericInitializer (local $0 i32) @@ -1743,190 +1930,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $class/GenericInitializer - block $class/Animal - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1568 - i32.lt_s - if - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34336 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - ) - (func $export:class/test (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1568 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1568 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load16_s offset=4 - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load8_s offset=6 - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store16 offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store8 offset=6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/const-folding.release.wat b/tests/compiler/const-folding.release.wat index bdd34a3c6c..2056595ad5 100644 --- a/tests/compiler/const-folding.release.wat +++ b/tests/compiler/const-folding.release.wat @@ -1,12 +1,16 @@ (module - (type $0 (func (param i64) (result i64))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i64) (result i64))) (global $const-folding/x (mut i32) (i32.const 0)) (memory $0 0) (export "x" (global $const-folding/x)) (export "test" (func $const-folding/test)) (export "memory" (memory $0)) (start $~start) + (func $~start + i32.const 30 + global.set $const-folding/x + ) (func $const-folding/test (param $0 i64) (result i64) local.get $0 i64.const 1 @@ -16,8 +20,4 @@ i64.shr_u i64.add ) - (func $~start - i32.const 30 - global.set $const-folding/x - ) ) diff --git a/tests/compiler/constructor.release.wat b/tests/compiler/constructor.release.wat index bf036d6c77..0299cca344 100644 --- a/tests/compiler/constructor.release.wat +++ b/tests/compiler/constructor.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (result i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -44,105 +44,6 @@ (data $9 (i32.const 1488) "\10\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $constructor/emptyCtor - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/emptyCtorWithFieldInit - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/emptyCtorWithFieldNoInit - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/emptyCtorWithFieldAccess - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/none - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/justFieldInit - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/justFieldNoInit - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/ctorConditionallyReturnsThis - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $constructor/ctorFieldInitOrder - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -295,330 +196,422 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + local.get $4 + local.get $2 + i32.const 12 + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 if local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 local.get $1 - i32.const 4 - i32.add + i32.store offset=12 local.get $2 - i32.add - i32.ne + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 234 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -626,197 +619,529 @@ if i32.const 0 i32.const 1392 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 + (local $6 i32) local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz if i32.const 0 i32.const 1392 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 + i32.load local.tee $3 + i32.const 1 + i32.and + i32.eqz if - local.get $3 - i32.const 4 - i32.add + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.const 4 i32.add local.get $1 - i32.gt_u + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $4 local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 + i32.const 4 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or + local.get $1 i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $3 i32.store offset=8 - local.get $1 - i32.const 4 - i32.add local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 i32.add - local.tee $3 i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - local.get $3 - i32.store offset=1568 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $constructor/CtorFieldInitOrder + block $constructor/CtorFieldInitWithoutConstructor + block $constructor/CtorConditionallyReturnsThis + block $constructor/CtorConditionallyReturns + block $constructor/CtorReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldAccess + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 end if unreachable @@ -881,767 +1206,277 @@ i32.const 34336 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34324 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34324 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34324 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 334 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.const 19 + i32.add + i32.const -16 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + i32.load offset=1568 + local.tee $3 if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s + local.get $1 + i32.gt_u if - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 499 - i32.const 16 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end end - local.get $5 local.get $2 - i32.load - i32.const -4 + i32.wrap_i64 + i32.const -16 i32.and - i32.gt_u + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end + local.get $1 local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $constructor/emptyCtor + local.tee $0 if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - local.get $6 + global.get $constructor/emptyCtorWithFieldInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldAccess + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/none + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturnsThis + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorFieldInitOrder + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 i32.const -4 i32.and - local.get $5 + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $constructor/CtorFieldInitWithoutConstructor#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + i32.const 34352 + i32.const 34400 i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or + local.get $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 + local.get $0 + local.get $0 i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.tee $1 - i32.const 0 + global.set $~lib/memory/__stack_pointer local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $constructor/CtorFieldInitOrder - block $constructor/CtorFieldInitWithoutConstructor - block $constructor/CtorConditionallyReturnsThis - block $constructor/CtorConditionallyReturns - block $constructor/CtorReturns - block $constructor/JustFieldNoInit - block $constructor/JustFieldInit - block $constructor/None - block $constructor/EmptyCtorWithFieldAccess - block $constructor/EmptyCtorWithFieldNoInit - block $constructor/EmptyCtorWithFieldInit - block $constructor/EmptyCtor - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $constructor/CtorFieldInitWithoutConstructor $constructor/CtorFieldInitOrder $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - unreachable ) (func $~start (local $0 i32) @@ -2121,127 +1956,293 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $constructor/ctorFieldInitOrder + global.get $~lib/memory/__stack_pointer + global.get $constructor/ctorFieldInitOrder + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 3 + global.get $~lib/rt/itcms/toSpace i32.ne if - i32.const 0 - i32.const 1456 - i32.const 112 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34324 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $constructor/CtorFieldInitWithoutConstructor#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1556 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1556 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/declare.release.wat b/tests/compiler/declare.release.wat index 93d8dcee02..795c5041aa 100644 --- a/tests/compiler/declare.release.wat +++ b/tests/compiler/declare.release.wat @@ -3,9 +3,9 @@ (type $1 (func (param i32 i32 i32 i32))) (import "declare" "externalConstant" (global $declare/externalConstant i32)) (import "declare" "my.externalConstant" (global $declare/my.externalConstant i32)) - (import "declare" "externalFunction" (func $declare/externalFunction)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) + (import "declare" "externalFunction" (func $declare/externalFunction)) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") diff --git a/tests/compiler/do.release.wat b/tests/compiler/do.release.wat index 1b1313c49a..09a5e6e6a9 100644 --- a/tests/compiler/do.release.wat +++ b/tests/compiler/do.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -34,132 +34,347 @@ (data $9 (i32.const 1472) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$125 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34264 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1152 - i32.const 132 - i32.const 16 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34264 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34264 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 local.get $2 i32.load offset=4 i32.const 3 @@ -231,6 +446,70 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $do/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -623,119 +902,90 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $do/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 + call $~lib/rt/itcms/__visit + return end - else + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -817,320 +1067,162 @@ i32.const 34272 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34264 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34264 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34264 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $1 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 + i32.const 1152 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1190,12 +1282,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1299,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -1363,6 +1456,9 @@ memory.fill local.get $0 ) + (func $~start + call $start:do + ) (func $start:do (local $0 i32) (local $1 i32) @@ -1509,11 +1605,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 br_if $do-loop|02 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1531,11 +1626,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 br_if $do-loop|03 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1553,14 +1647,13 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 i32.const 0 local.get $0 select br_if $do-loop|09 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1811,99 +1904,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $do/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - call $start:do - ) - (func $do/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1496 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1496 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34288 - i32.const 34336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/duplicate-fields.release.wat b/tests/compiler/duplicate-fields.release.wat index 100107f6b6..93f8386acc 100644 --- a/tests/compiler/duplicate-fields.release.wat +++ b/tests/compiler/duplicate-fields.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -36,194 +36,319 @@ (data $9 (i32.const 1504) "\0b\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $duplicate-fields/foo - local.tee $0 + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $duplicate-fields/raz - local.tee $0 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 20 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$139 - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34320 + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 i32.lt_u - i32.and - i32.eqz + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$139 end - local.get $0 - i32.load offset=8 + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if i32.const 0 - i32.const 1120 - i32.const 132 + i32.const 1392 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 i32.and i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - local.get $1 - i32.const 1504 + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1508 + i32.const -4 + i32.and i32.add + local.tee $3 + local.get $3 i32.load - i32.const 32 + i32.const -3 i32.and + i32.store end - local.set $3 local.get $2 - i32.load offset=8 - local.set $1 + local.get $1 + i32.store offset=12 + local.get $2 local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -249,6 +374,61 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $duplicate-fields/A2#set:bar (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -641,461 +821,184 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 + i32.const 1120 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$139 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34320 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$139 end - else local.get $0 - i32.const 1572 - i32.add + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else local.get $1 + i32.const 1504 + i32.load i32.gt_u if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 2 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 + local.get $0 local.get $1 - i32.const 0 i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34320 - i32.const 0 - i32.store - i32.const 35888 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34320 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $duplicate-fields/A3 + block $duplicate-fields/B3 + block $duplicate-fields/B2 + block $duplicate-fields/Foo + block $duplicate-fields/B + block $duplicate-fields/A + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $duplicate-fields/A $duplicate-fields/B $folding-inner0 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34320 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.load + call $~lib/rt/itcms/__visit + br $folding-inner0 end + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + return end + unreachable end - i32.const 34320 - i32.const 35892 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34320 - global.set $~lib/rt/tlsf/ROOT + local.get $0 + i32.load + call $~lib/rt/itcms/__visit ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34320 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34320 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34320 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 256 @@ -1223,427 +1126,265 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if - global.get $~lib/rt/itcms/total - i32.const 1 + local.get $0 + i32.const 4 i32.shl - i32.const 1024 + local.get $1 i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl + local.get $0 + i32.const 1 i32.add - global.set $~lib/rt/itcms/threshold + local.set $0 + br $for-loop|0 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.const 34320 + i32.const 35892 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 1056 + i32.const 0 i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $1 + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 499 + i32.const 389 i32.const 16 call $~lib/builtins/abort unreachable end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - memory.fill - local.get $1 - ) - (func $duplicate-fields/A2#set:bar (param $0 i32) (param $1 i32) + local.get $3 + i32.store offset=1568 local.get $0 local.get $1 - i32.store - local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $duplicate-fields/foo + local.tee $0 if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/__visit + end + global.get $duplicate-fields/raz + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.ne if local.get $0 - i32.const 20 - i32.sub i32.load offset=4 i32.const 3 i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 3 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $duplicate-fields/A3 - block $duplicate-fields/B3 - block $duplicate-fields/B2 - block $duplicate-fields/Foo - block $duplicate-fields/B - block $duplicate-fields/A - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $duplicate-fields/A $duplicate-fields/B $folding-inner0 $duplicate-fields/Foo $duplicate-fields/B2 $duplicate-fields/B3 $duplicate-fields/A3 $invalid - end - return - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - br $folding-inner0 - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1552 @@ -2048,4 +1789,264 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34320 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34320 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34320 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) ) diff --git a/tests/compiler/empty-exportruntime.release.wat b/tests/compiler/empty-exportruntime.release.wat index 605d4f43c8..422cd0bc5a 100644 --- a/tests/compiler/empty-exportruntime.release.wat +++ b/tests/compiler/empty-exportruntime.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) (type $7 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -42,190 +42,6 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1520 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34356 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 1568 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - i32.const 1572 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -250,76 +66,336 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 34356 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 @@ -642,119 +718,209 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34356 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 1120 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - local.get $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -814,415 +980,418 @@ i32.store offset=96 local.get $1 i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34368 - i32.const 35940 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34368 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - i32.const 34356 - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + i32.add + local.set $1 + br $for-loop|1 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34356 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - i32.const 10 - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 4 - i32.shr_u - local.set $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 else - local.get $1 - i32.const 536870910 - i32.lt_u + local.get $2 + i32.const 1568 + i32.load + i32.gt_u if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 2 + i32.shl + i32.const 1572 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 local.get $1 - i32.const 16 - i32.lt_u + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 local.get $2 - i32.const 23 - i32.lt_u + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34356 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add + i32.const 20 + i32.sub + local.tee $1 i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl + i32.const 3 i32.and - local.tee $1 - if (result i32) + i32.const 3 + i32.ne + if + i32.const 1520 + i32.const 1120 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1456 + i32.const 1120 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 local.get $1 - i32.ctz local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 + i32.store offset=8 local.get $2 - i32.const 1 - i32.add - i32.shl + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 end + local.get $0 ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1322,8 +1491,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1351,7 +1518,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1365,7 +1533,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1537,116 +1707,6 @@ memory.fill local.get $1 ) - (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 1456 - i32.const 1120 - i32.const 338 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/pinSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $3 - i32.const 3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=8 - end - local.get $0 - ) - (func $~lib/rt/itcms/__unpin (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 1520 - i32.const 1120 - i32.const 352 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) (func $~lib/rt/itcms/__collect global.get $~lib/rt/itcms/state i32.const 0 @@ -1682,63 +1742,4 @@ i32.add global.set $~lib/rt/itcms/threshold ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34356 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - ) ) diff --git a/tests/compiler/empty-new.release.wat b/tests/compiler/empty-new.release.wat index 21625b2ae4..f4381da8f1 100644 --- a/tests/compiler/empty-new.release.wat +++ b/tests/compiler/empty-new.release.wat @@ -3,9 +3,9 @@ (type $1 (func (param i32))) (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param i32 i32 i64))) - (type $5 (func (result i32))) - (type $6 (func (param i32) (result i32))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32 i32 i64))) + (type $6 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -31,51 +31,6 @@ (data $8 (i32.const 1440) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -620,6 +575,168 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -734,85 +851,85 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34240 - i32.const 35812 + ) + (func $~start memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34240 - global.set $~lib/rt/tlsf/ROOT + i32.const 16 + i32.shl + i32.const 34228 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $~lib/rt/itcms/__new ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1074,63 +1191,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (local $0 i32) (local $1 i32) @@ -1187,12 +1247,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1205,7 +1264,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s @@ -1358,64 +1419,4 @@ i32.const 0 memory.fill ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34228 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $~lib/rt/itcms/__new - ) ) diff --git a/tests/compiler/enum-to-string.release.wat b/tests/compiler/enum-to-string.release.wat index 91a870b03a..9e1363df6d 100644 --- a/tests/compiler/enum-to-string.release.wat +++ b/tests/compiler/enum-to-string.release.wat @@ -21,9 +21,6 @@ (data $6.1 (i32.const 1272) "\02\00\00\00\06\00\00\00C\00E\000") (export "memory" (memory $0)) (start $~start) - (func $~start - call $start:enum-to-string - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -186,6 +183,9 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~start + call $start:enum-to-string + ) (func $start:enum-to-string global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/export.release.wat b/tests/compiler/export.release.wat index cab08e7ae1..89f40fe121 100644 --- a/tests/compiler/export.release.wat +++ b/tests/compiler/export.release.wat @@ -11,11 +11,6 @@ (export "b" (global $export/b)) (export "renamed_c" (global $export/c)) (export "memory" (memory $0)) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -26,4 +21,9 @@ local.get $1 i32.mul ) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) ) diff --git a/tests/compiler/exportimport-table.release.wat b/tests/compiler/exportimport-table.release.wat index 9c5d7e1158..57904fd960 100644 --- a/tests/compiler/exportimport-table.release.wat +++ b/tests/compiler/exportimport-table.release.wat @@ -4,9 +4,9 @@ (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") - (elem $0 (i32.const 1) $start:exportimport-table~anonymous|0) + (elem $0 (i32.const 1) $~start) (export "memory" (memory $0)) (export "table" (table $0)) - (func $start:exportimport-table~anonymous|0 + (func $~start ) ) diff --git a/tests/compiler/exports.release.wat b/tests/compiler/exports.release.wat index ec7aad9f8e..c928da80f0 100644 --- a/tests/compiler/exports.release.wat +++ b/tests/compiler/exports.release.wat @@ -12,10 +12,9 @@ (export "renamed_mul" (func $export/mul)) (export "memory" (memory $0)) (export "__setArgumentsLength" (func $~setArgumentsLength)) - (func $exports/add (param $0 i32) (param $1 i32) (result i32) + (func $~setArgumentsLength (param $0 i32) local.get $0 - local.get $1 - i32.add + global.set $~argumentsLength ) (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) block $1of1 @@ -35,13 +34,14 @@ local.get $1 i32.sub ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) + (func $exports/add (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.mul + i32.add ) - (func $~setArgumentsLength (param $0 i32) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) local.get $0 - global.set $~argumentsLength + local.get $1 + i32.mul ) ) diff --git a/tests/compiler/exportstar-rereexport.release.wat b/tests/compiler/exportstar-rereexport.release.wat index fbd6f1e267..29956c7614 100644 --- a/tests/compiler/exportstar-rereexport.release.wat +++ b/tests/compiler/exportstar-rereexport.release.wat @@ -47,69 +47,6 @@ (export "renamed_default" (func $export-default/theDefault)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $rereexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $rereexport/exportsNamespaceCar - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $reexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -654,145 +591,187 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__visit + return end + return end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + unreachable + ) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s if - return + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 + i32.store local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize + (func $exports/Car#constructor (result i32) (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34336 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 35904 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 i32.store loop $for-loop|0 local.get $0 @@ -848,6 +827,315 @@ i32.const 34336 global.set $~lib/rt/tlsf/ROOT ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $rereexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $export-default/theDefault + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:exportstar-rereexport$1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34328 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:exportstar-rereexport$1 + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) @@ -1089,81 +1377,24 @@ i32.load i32.const 1 i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) @@ -1221,12 +1452,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1239,7 +1469,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s @@ -1393,235 +1625,4 @@ i32.store align=1 local.get $0 ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - block $__inlined_func$start:exportstar-rereexport$1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34328 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - call $exports/Car#get:numDoors - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $exports/Car#constructor - global.set $rereexport/car - global.get $~lib/memory/__stack_pointer - global.get $rereexport/car - local.tee $0 - i32.store - local.get $0 - call $exports/Car#get:numDoors - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $~lib/memory/__stack_pointer - global.get $rereexport/exportsNamespaceCar - local.tee $0 - i32.store - local.get $0 - call $exports/Car#get:numDoors - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:exportstar-rereexport$1 - end - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $exports/Car#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/exportstar.release.wat b/tests/compiler/exportstar.release.wat index cab08e7ae1..89f40fe121 100644 --- a/tests/compiler/exportstar.release.wat +++ b/tests/compiler/exportstar.release.wat @@ -11,11 +11,6 @@ (export "b" (global $export/b)) (export "renamed_c" (global $export/c)) (export "memory" (memory $0)) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -26,4 +21,9 @@ local.get $1 i32.mul ) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) ) diff --git a/tests/compiler/extends-baseaggregate.release.wat b/tests/compiler/extends-baseaggregate.release.wat index 280a9a62c3..7ece00a053 100644 --- a/tests/compiler/extends-baseaggregate.release.wat +++ b/tests/compiler/extends-baseaggregate.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (param i32))) (type $1 (func)) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -46,189 +46,6 @@ (data $14.1 (i32.const 1732) "\02A\00\00\02A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 1408 - call $~lib/rt/itcms/__visit - i32.const 1616 - call $~lib/rt/itcms/__visit - i32.const 1216 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$142 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34508 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$142 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1696 - i32.load - i32.gt_u - if - i32.const 1408 - i32.const 1472 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1700 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -253,330 +70,387 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1552 - i32.const 268 - i32.const 14 + i32.const 1216 + i32.const 1280 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1552 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1216 i32.const 1552 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1552 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1552 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1552 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1552 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -584,520 +458,560 @@ if i32.const 0 i32.const 1552 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1552 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + local.tee $1 + i32.load offset=96 + i32.eq if - local.get $3 - i32.const 4 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1552 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end - else + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.const 1572 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1552 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1552 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1552 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34512 - i32.const 0 - i32.store - i32.const 36080 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34512 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34512 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end - i32.const 34512 - i32.const 36084 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34512 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34508 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1280 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$142 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34508 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1280 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 34508 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34508 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + br $__inlined_func$~lib/rt/itcms/Object#unlink$142 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1696 + i32.load + i32.gt_u + if + i32.const 1408 + i32.const 1472 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1700 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $extends-baseaggregate/A2 + block $extends-baseaggregate/A1 + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $extends-baseaggregate/A1 $folding-inner0 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load offset=16 + call $~lib/rt/itcms/__visit + return end - global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1552 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.load offset=16 + call $~lib/rt/itcms/__visit + return end + local.get $0 + call $~lib/array/Array~visit + return end - i32.const 10 + local.get $0 + call $~lib/array/Array~visit return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + unreachable end - i32.const 0 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1174,428 +1088,301 @@ local.get $0 local.get $1 i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1216 - i32.const 1280 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1216 - i32.const 1552 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else + local.get $0 + i32.load + i32.const -1 local.get $2 - i32.const 19 + i32.const 1 i32.add - i32.const -16 + i32.shl i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u + local.tee $1 if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - local.get $5 + i32.const 0 end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34512 + i32.const 0 + i32.store + i32.const 36080 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34512 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1552 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34512 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $5 + i32.const 34512 + i32.const 36084 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34512 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1552 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + local.get $1 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1552 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end + local.get $3 + i32.store offset=1568 local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 1616 + call $~lib/rt/itcms/__visit + i32.const 1216 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - i32.eq - if + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + local.get $1 + i32.ne if local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 + i32.load offset=4 i32.const 3 - i32.eq i32.and + i32.const 3 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1280 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1652,66 +1439,20 @@ local.get $1 i32.const 4 i32.add - local.set $1 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $extends-baseaggregate/A2 - block $extends-baseaggregate/A1 - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $extends-baseaggregate/A1 $folding-inner0 $extends-baseaggregate/A2 $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return + local.set $1 + br $while-continue|0 end - unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start (local $0 i32) @@ -1915,144 +1656,404 @@ i32.const 1176 i32.load local.tee $0 - i32.const 2 - i32.shr_u - i32.gt_u + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$141 + i32.const 1073741820 + local.get $0 + i32.const 1 + i32.shl + local.tee $0 + local.get $0 + i32.const 1073741820 + i32.ge_u + select + local.tee $1 + i32.const 8 + local.get $2 + local.get $2 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + local.get $0 + local.get $1 + i32.lt_u + select + local.tee $3 + i32.const 1168 + i32.load + local.tee $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $3 + i32.store offset=16 + local.get $0 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$141 + end + local.get $3 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $0 + local.get $3 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $3 + i32.gt_u + select + memory.copy + end + local.get $0 + local.get $1 + i32.ne + if + i32.const 1168 + local.get $1 + i32.store + i32.const 1172 + local.get $1 + i32.store + i32.const 1168 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + i32.const 1176 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1172 + i32.load + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + i32.const 1168 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1180 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34508 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 - i32.const 268435455 - i32.gt_u + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if - i32.const 1616 - i32.const 1664 - i32.const 19 - i32.const 48 + i32.const 0 + i32.const 1280 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$141 - i32.const 1073741820 + local.get $0 + i32.const 34508 + i32.lt_u + if local.get $0 - i32.const 1 - i32.shl - local.tee $0 + i32.const 0 + i32.store offset=4 local.get $0 - i32.const 1073741820 - i32.ge_u - select - local.tee $1 - i32.const 8 - local.get $2 - local.get $2 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total local.get $0 - local.get $1 - i32.lt_u - select - local.tee $3 - i32.const 1168 - i32.load - local.tee $0 - i32.const 20 - i32.sub - local.tee $2 i32.load i32.const -4 i32.and - i32.const 16 + i32.const 4 + i32.add i32.sub - i32.le_u + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34508 + i32.ge_u if - local.get $2 - local.get $3 - i32.store offset=16 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$141 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1552 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - local.get $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $0 - local.get $3 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $3 - i32.gt_u - select - memory.copy - end - local.get $0 - local.get $1 - i32.ne - if - i32.const 1168 - local.get $1 - i32.store - i32.const 1172 - local.get $1 - i32.store - i32.const 1168 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link end - i32.const 1176 - local.get $3 - i32.store + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - i32.const 1172 - i32.load - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - i32.const 1168 - local.get $6 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - i32.const 1180 - local.get $4 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 ) ) diff --git a/tests/compiler/extends-recursive.release.wat b/tests/compiler/extends-recursive.release.wat index b00fbf4cd8..4ae0ed92db 100644 --- a/tests/compiler/extends-recursive.release.wat +++ b/tests/compiler/extends-recursive.release.wat @@ -32,51 +32,6 @@ (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -621,1060 +576,1106 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $3 - i32.const 4 + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 end - local.get $3 - local.get $1 + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 i32.const 16 + i32.shl + i32.const 4 i32.sub - local.tee $5 - i32.eq + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end + local.get $5 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.load + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + i32.gt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - local.get $3 - i32.const 8 + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub local.tee $3 - i32.const 1 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end unreachable end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34240 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end end - i32.const 34240 - i32.const 35812 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34240 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if local.get $0 - global.set $~lib/rt/itcms/iter + i32.const 4 + i32.shl local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34236 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~start + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u + block $__inlined_func$start:extends-recursive$1 + memory.size i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 + i32.const 34236 + i32.sub i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.ctz - local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - else + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:extends-recursive$1 end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - local.get $2 + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.gt_s - br_if $do-loop|0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow i32.const 0 - i32.lt_s + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - return end - return + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount return end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $__inlined_func$start:extends-recursive$1 - memory.size - i32.const 16 - i32.shl - i32.const 34236 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $0 - i32.eqz + i32.const 34236 + i32.lt_u if - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 + i32.store offset=4 + local.get $0 i32.const 0 - call $~lib/rt/itcms/__new + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add local.tee $0 - i32.store + i32.const 34236 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:extends-recursive$1 + i32.const 10 + return end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) ) diff --git a/tests/compiler/external.release.wat b/tests/compiler/external.release.wat index 26463e94fb..5101b88d4c 100644 --- a/tests/compiler/external.release.wat +++ b/tests/compiler/external.release.wat @@ -1,9 +1,9 @@ (module (type $0 (func)) (import "foo" "var" (global $external/var_ i32)) - (import "external" "foo" (func $external/foo)) (import "external" "bar" (func $external/two)) (import "foo" "baz" (func $external/three)) + (import "external" "foo" (func $external/foo)) (memory $0 0) (export "foo" (func $external/foo)) (export "two" (func $external/two)) diff --git a/tests/compiler/features/reference-types.release.wat b/tests/compiler/features/reference-types.release.wat index 1c580b033e..40fd3e75ca 100644 --- a/tests/compiler/features/reference-types.release.wat +++ b/tests/compiler/features/reference-types.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (result externref))) - (type $1 (func)) - (type $2 (func (param externref) (result externref))) + (type $1 (func (param externref) (result externref))) + (type $2 (func)) (type $3 (func (param i32 i32 i32 i32))) - (import "reference-types" "somethingReal" (func $features/reference-types/somethingReal (result externref))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "reference-types" "somethingNull" (func $features/reference-types/somethingNull (result externref))) + (import "reference-types" "somethingReal" (func $features/reference-types/somethingReal (result externref))) (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) + (import "reference-types" "somethingNull" (func $features/reference-types/somethingNull (result externref))) (global $features/reference-types/funcGlobal (mut funcref) (ref.null nofunc)) (global $features/reference-types/a externref (ref.null noextern)) (global $features/reference-types/b funcref (ref.null nofunc)) @@ -28,14 +28,6 @@ (export "nonNullReal" (global $features/reference-types/nonNullReal)) (export "memory" (memory $0)) (start $~start) - (func $features/reference-types/someFunc - ) - (func $features/reference-types/internal (param $0 externref) (result externref) - local.get $0 - call $features/reference-types/external - call $features/reference-types/external - call $features/reference-types/external - ) (func $~start (local $0 externref) call $features/reference-types/somethingReal @@ -111,4 +103,12 @@ local.get $0 global.set $features/reference-types/nonNullReal ) + (func $features/reference-types/internal (param $0 externref) (result externref) + local.get $0 + call $features/reference-types/external + call $features/reference-types/external + call $features/reference-types/external + ) + (func $features/reference-types/someFunc + ) ) diff --git a/tests/compiler/features/threads.release.wat b/tests/compiler/features/threads.release.wat index 679c863058..3db113d7ca 100644 --- a/tests/compiler/features/threads.release.wat +++ b/tests/compiler/features/threads.release.wat @@ -3,7 +3,11 @@ (memory $0 1 10 shared) (export "memory" (memory $0)) (start $~start) - (func $features/threads/testAtomic + (func $~start + call $features/threads/testAtomic + call $features/threads/testAtomicAsm + ) + (func $features/threads/testAtomicAsm i32.const 0 i32.atomic.load8_u drop @@ -25,9 +29,6 @@ i32.const 0 i64.atomic.load drop - i32.const 8 - i64.atomic.load - drop i32.const 0 i32.const 1 i32.atomic.store8 @@ -49,9 +50,6 @@ i32.const 0 i64.const 1 i64.atomic.store - i32.const 8 - i64.const 1 - i64.atomic.store i32.const 0 i32.const 1 i32.atomic.rmw8.add_u @@ -81,10 +79,6 @@ i64.atomic.rmw.add drop i32.const 0 - i64.const 1 - i64.atomic.rmw.add offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.sub_u drop @@ -113,10 +107,6 @@ i64.atomic.rmw.sub drop i32.const 0 - i64.const 1 - i64.atomic.rmw.sub offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.and_u drop @@ -145,10 +135,6 @@ i64.atomic.rmw.and drop i32.const 0 - i64.const 1 - i64.atomic.rmw.and offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.or_u drop @@ -177,10 +163,6 @@ i64.atomic.rmw.or drop i32.const 0 - i64.const 1 - i64.atomic.rmw.or offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.xor_u drop @@ -209,10 +191,6 @@ i64.atomic.rmw.xor drop i32.const 0 - i64.const 1 - i64.atomic.rmw.xor offset=8 - drop - i32.const 0 i32.const 1 i32.atomic.rmw8.xchg_u drop @@ -241,10 +219,6 @@ i64.atomic.rmw.xchg drop i32.const 0 - i64.const 1 - i64.atomic.rmw.xchg offset=8 - drop - i32.const 0 i32.const 1 i32.const 2 i32.atomic.rmw8.cmpxchg_u @@ -279,13 +253,8 @@ i64.const 2 i64.atomic.rmw.cmpxchg drop - i32.const 0 - i64.const 1 - i64.const 2 - i64.atomic.rmw.cmpxchg offset=8 - drop ) - (func $features/threads/testAtomicAsm + (func $features/threads/testAtomic i32.const 0 i32.atomic.load8_u drop @@ -307,6 +276,9 @@ i32.const 0 i64.atomic.load drop + i32.const 8 + i64.atomic.load + drop i32.const 0 i32.const 1 i32.atomic.store8 @@ -328,6 +300,9 @@ i32.const 0 i64.const 1 i64.atomic.store + i32.const 8 + i64.const 1 + i64.atomic.store i32.const 0 i32.const 1 i32.atomic.rmw8.add_u @@ -357,6 +332,10 @@ i64.atomic.rmw.add drop i32.const 0 + i64.const 1 + i64.atomic.rmw.add offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.sub_u drop @@ -385,6 +364,10 @@ i64.atomic.rmw.sub drop i32.const 0 + i64.const 1 + i64.atomic.rmw.sub offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.and_u drop @@ -413,6 +396,10 @@ i64.atomic.rmw.and drop i32.const 0 + i64.const 1 + i64.atomic.rmw.and offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.or_u drop @@ -441,6 +428,10 @@ i64.atomic.rmw.or drop i32.const 0 + i64.const 1 + i64.atomic.rmw.or offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.xor_u drop @@ -469,6 +460,10 @@ i64.atomic.rmw.xor drop i32.const 0 + i64.const 1 + i64.atomic.rmw.xor offset=8 + drop + i32.const 0 i32.const 1 i32.atomic.rmw8.xchg_u drop @@ -497,6 +492,10 @@ i64.atomic.rmw.xchg drop i32.const 0 + i64.const 1 + i64.atomic.rmw.xchg offset=8 + drop + i32.const 0 i32.const 1 i32.const 2 i32.atomic.rmw8.cmpxchg_u @@ -531,9 +530,10 @@ i64.const 2 i64.atomic.rmw.cmpxchg drop - ) - (func $~start - call $features/threads/testAtomic - call $features/threads/testAtomicAsm + i32.const 0 + i64.const 1 + i64.const 2 + i64.atomic.rmw.cmpxchg offset=8 + drop ) ) diff --git a/tests/compiler/field-initialization.release.wat b/tests/compiler/field-initialization.release.wat index 6f87390f7f..187b718ade 100644 --- a/tests/compiler/field-initialization.release.wat +++ b/tests/compiler/field-initialization.release.wat @@ -1,9 +1,9 @@ (module (type $0 (func)) - (type $1 (func (param i32))) + (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32 i32))) (type $3 (func (result i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $4 (func (param i32))) (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) @@ -50,322 +50,798 @@ (data $16.1 (i32.const 1832) " \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1536 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 20 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$241 - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34668 + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 i32.lt_u - i32.and - i32.eqz + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$241 end - local.get $0 - i32.load offset=8 + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if i32.const 0 - i32.const 1120 - i32.const 132 + i32.const 1392 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - local.get $1 - i32.const 1792 + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1796 + i32.const -4 + i32.and i32.add + local.tee $3 + local.get $3 i32.load - i32.const 32 + i32.const -3 i32.and + i32.store end - local.set $3 local.get $2 - i32.load offset=8 - local.set $1 + local.get $1 + i32.store offset=12 + local.get $2 local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 i32.eqz if return end - global.get $~lib/rt/itcms/white local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and i32.eq if local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s + if + i32.const 34688 + i32.const 34736 i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$118 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$118 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 - local.tee $4 + i32.const 3 + i32.and + i32.eq if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $5 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1900 + i32.lt_s if - local.get $1 - local.get $5 - i32.store offset=96 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 local.get $5 i32.eqz if @@ -645,503 +1121,235 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 + i32.const 1120 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$241 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34668 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$241 end - else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=8 + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and end - local.get $1 - local.get $4 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 + local.get $0 local.get $1 - i32.const 0 i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $field-initialization/SomeOtherObject + block $field-initialization/SomeObject + block $field-initialization/Value_Ctor_Init + block $field-initialization/Value_Init_Ctor + block $field-initialization/Value_Ctor + block $field-initialization/Value + block $field-initialization/Value_Init + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $field-initialization/Value_Init $field-initialization/Value $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/SomeObject $field-initialization/SomeOtherObject $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return + end unreachable end - i32.const 34672 - i32.const 0 - i32.store - i32.const 36240 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34672 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34672 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 end - end - i32.const 34672 - i32.const 36244 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34672 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34668 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34668 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34668 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end local.get $1 i32.const 16 @@ -1196,465 +1404,282 @@ local.get $0 local.get $1 i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - local.get $5 + i32.const 0 end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34672 + i32.const 0 + i32.store + i32.const 36240 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34672 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34672 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $5 + i32.const 34672 + i32.const 36244 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34672 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + local.get $1 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end + local.get $3 + i32.store offset=1568 local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1536 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - i32.eq - if + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + local.get $1 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq local.get $0 + i32.load offset=4 i32.const 3 - i32.eq i32.and + i32.const 3 + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $field-initialization/SomeOtherObject - block $field-initialization/SomeObject - block $field-initialization/Value_Ctor_Init - block $field-initialization/Value_Init_Ctor - block $field-initialization/Value_Ctor - block $field-initialization/Value - block $field-initialization/Value_Init - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $field-initialization/Value_Init $field-initialization/Value $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/SomeObject $field-initialization/SomeOtherObject $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.const 20 + i32.add + call $~lib/rt/__visit_members local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - return + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - unreachable end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:field-initialization ) - (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) - (local $1 i32) + (func $field-initialization/SomeOtherObject#constructor (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1672,49 +1697,38 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 19 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end + i32.const 12 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/object/Object#constructor + call $field-initialization/SomeObject#constructor local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $0 - local.get $1 - i32.store + i32.const 0 + i32.store offset=8 local.get $0 - local.get $1 + i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) + (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1731,12 +1745,15 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 21 + i32.const 4 + i32.const 19 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1752,234 +1769,285 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $0 - i32.const 0 - i32.store + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 + local.get $1 + i32.store local.get $0 - i32.const 0 + local.get $1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~start + call $start:field-initialization + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1900 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 - i32.const 8 - i32.add - local.set $2 + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i32.const 8 - i32.add - local.set $1 local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34668 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - block $__inlined_func$~lib/util/string/compareImpl$118 - loop $while-continue|1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34668 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34668 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$118 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $field-initialization/SomeOtherObject#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1900 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $field-initialization/SomeObject#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) (func $start:field-initialization (local $0 i32) @@ -3421,71 +3489,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1900 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1900 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/field.release.wat b/tests/compiler/field.release.wat index 415b3934d5..da05c7bb6a 100644 --- a/tests/compiler/field.release.wat +++ b/tests/compiler/field.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -35,183 +35,6 @@ (data $9.1 (i32.const 1496) "\02A\00\00\02\t") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$127 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34272 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$127 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1472 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -236,851 +59,1220 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34272 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + local.tee $1 + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34272 + i32.lt_u if local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total local.get $0 i32.load - i32.const -2 - local.get $2 - i32.rotl + i32.const -4 i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34272 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.const 0 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 2 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 i32.add - i32.ne + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1056 i32.const 1392 - i32.const 234 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store local.get $2 - i32.const 256 - i32.lt_u + i32.const 12 + i32.le_u if (result i32) - local.get $2 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 i32.sub - local.set $5 - local.get $2 - local.get $3 + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $2 - i32.const 16 - i32.lt_u local.get $5 - i32.const 23 - i32.lt_u + local.get $2 + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 251 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl + local.get $4 local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl + call $~lib/rt/tlsf/removeBlock local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 + local.set $6 local.get $5 - i32.const 2 - i32.shl + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + i32.const 15 + i32.and if i32.const 0 i32.const 1392 - i32.const 382 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $6 + i32.const -4 i32.and - i32.const 4 + local.get $5 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 local.tee $3 + i32.const 16 + i32.ge_u if - local.get $3 + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 i32.const 4 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + local.get $5 + i32.add + local.tee $5 local.get $3 - local.get $1 - i32.const 16 + i32.const 4 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - local.get $0 - i32.const 1572 + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end + local.get $2 local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - i32.lt_s - else + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34272 - i32.const 0 - i32.store - i32.const 35840 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34272 i32.add - i32.const 0 + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 34272 - i32.const 35844 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34272 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34272 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$127 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.load offset=8 i32.eqz - local.get $1 - i32.const 3 + local.get $0 + i32.const 34272 + i32.lt_u i32.and - i32.ne + i32.eqz if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 34272 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34272 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + br $__inlined_func$~lib/rt/itcms/Object#unlink$127 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $field/NoStaticConflict + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field/NoStaticConflict $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - global.get $~lib/rt/tlsf/ROOT - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 15 - i32.and - i32.const 1 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 end - i32.const 10 - return + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1152,376 +1344,302 @@ local.get $1 i32.shl i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz local.get $2 - i32.const 16 - i32.shl i32.const 4 - i32.sub - i32.ne i32.shl i32.add - i32.const 65535 + i32.const 2 + i32.shl i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort unreachable end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable end end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort + i32.lt_s + else + i32.const 0 + end + if unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 361 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 @@ -1577,6 +1695,9 @@ end end ) + (func $~start + call $start:field + ) (func $start:field (local $0 i32) (local $1 i32) @@ -1788,124 +1909,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String> - block $field/NoStaticConflict - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field/NoStaticConflict $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1504 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1504 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - unreachable - end - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - call $start:field - ) ) diff --git a/tests/compiler/for.release.wat b/tests/compiler/for.release.wat index 4f07612e6c..d638bb953f 100644 --- a/tests/compiler/for.release.wat +++ b/tests/compiler/for.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -34,245 +34,524 @@ (data $9 (i32.const 1472) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $for/Ref#constructor (result i32) (local $0 i32) (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.ne + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1496 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__visit (param $0 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$128 - local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34264 - i32.lt_u - i32.and - i32.eqz + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$128 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1472 - i32.load - i32.gt_u + i32.eq if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.const 2 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34264 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34264 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $2 - local.get $1 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + local.get $0 i32.eqz if - i32.const 0 - i32.const 1424 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $3 - i32.const -4 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 i32.and - local.tee $3 - i32.const 12 - i32.lt_u + i32.eq if - i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34264 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 i32.const 1073741820 local.get $3 local.get $3 @@ -623,514 +902,327 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34272 - i32.const 0 - i32.store - i32.const 35840 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34272 - i32.const 35844 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34272 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34264 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $for/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + return + end + return + end + return end - global.get $~lib/rt/itcms/visitCount + local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne if i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 + i32.const 1424 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34264 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34264 - i32.ge_u + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.add + local.set $1 + br $for-loop|1 end end - i32.const 10 - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $1 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 + i32.const 1152 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1190,12 +1282,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1299,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -1363,10 +1456,14 @@ memory.fill local.get $0 ) + (func $~start + call $start:for + ) (func $start:for (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) loop $for-loop|0 local.get $0 i32.const 10 @@ -1490,11 +1587,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $3 br_if $for-loop|06 end - local.get $0 - i32.const 10 - i32.ne + local.get $3 if i32.const 0 i32.const 1056 @@ -1807,99 +1903,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $for/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - call $start:for - ) - (func $for/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1496 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1496 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34288 - i32.const 34336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat index fa80a471b8..ae676fe060 100644 --- a/tests/compiler/function-call.release.wat +++ b/tests/compiler/function-call.release.wat @@ -56,67 +56,6 @@ (elem $0 (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|0 $start:function-call~anonymous|2 $start:function-call~anonymous|2 $start:function-call~fn2|4 $function-call/Foo#fnVoid $start:function-call~fn2|4 $function-call/Foo#fnRet) (export "memory" (memory $0)) (start $~start) - (func $start:function-call~anonymous|0 - ) - (func $start:function-call~anonymous|2 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:function-call~fn2|4 (param $0 i32) (result i32) - i32.const 1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $function-call/foo - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -661,6 +600,201 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-call/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1804 + i32.lt_s + if + i32.const 34592 + i32.const 34640 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34576 + i32.const 0 + i32.store + i32.const 36144 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34576 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34576 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34576 + i32.const 36148 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34576 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -775,567 +909,222 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $function-call/foo + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34576 - i32.const 0 - i32.store - i32.const 36144 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34576 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34576 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34576 - i32.const 36148 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34576 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34572 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + unreachable end - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34572 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34572 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 i32.and - local.tee $1 - if (result i32) - local.get $0 + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if local.get $1 - i32.ctz + local.get $3 i32.const 2 - i32.shl + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 i32.add - i32.load offset=96 + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store @@ -1401,72 +1190,19 @@ memory.fill local.get $0 ) - (func $function-call/Foo#fnVoid (param $0 i32) + (func $start:function-call~fn2|4 (param $0 i32) (result i32) + i32.const 1 ) - (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 3 + (func $start:function-call~anonymous|2 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $function-call/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1804 - i32.lt_s - if - i32.const 34592 - i32.const 34640 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - (local $0 i32) - (local $1 i32) + (func $start:function-call~anonymous|0 + ) + (func $~start + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1650,4 +1386,269 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34572 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34572 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34572 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $function-call/Foo#fnVoid (param $0 i32) + ) + (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 3 + ) ) diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat index 9272f39796..560499a4a1 100644 --- a/tests/compiler/function-expression.release.wat +++ b/tests/compiler/function-expression.release.wat @@ -76,205 +76,6 @@ (export "semanticallyAnonymous" (func $function-expression/semanticallyAnonymous)) (export "memory" (memory $0)) (start $~start) - (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) - local.get $0 - ) - (func $start:function-expression~someName|2 - ) - (func $start:function-expression~anonymous|3 (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) - i32.const 3 - ) - (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) - i32.const 1 - ) - (func $start:function-expression~anonymous|6 (param $0 i32) (param $1 i32) (result i32) - i32.const 42 - ) - (func $start:function-expression~anonymous|7~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 24 - i32.add - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1792 - call $~lib/rt/itcms/__visit - i32.const 1600 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1664 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$133 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34924 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$133 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2112 - i32.load - i32.gt_u - if - i32.const 1792 - i32.const 1856 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 2116 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -299,6 +100,9 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) + local.get $0 + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -691,57 +495,392 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1936 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1936 - i32.const 389 - i32.const 16 + i32.const 1664 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$133 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34924 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$133 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2112 + i32.load + i32.gt_u + if + i32.const 1792 + i32.const 1856 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2116 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-expression/FieldClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $function-expression/FieldClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:function-expression~anonymous|7~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 24 + i32.add + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34928 + i32.const 0 + i32.store + i32.const 36496 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34928 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34928 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34928 + i32.const 36500 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34928 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1936 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 local.get $5 local.set $1 end @@ -805,85 +944,92 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size + i32.const 1792 + call $~lib/rt/itcms/__visit + i32.const 1600 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34928 - i32.const 0 - i32.store - i32.const 36496 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34928 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34928 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34928 - i32.const 36500 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34928 - global.set $~lib/rt/tlsf/ROOT + ) + (func $start:function-expression~anonymous|6 (param $0 i32) (param $1 i32) (result i32) + i32.const 42 + ) + (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) + i32.const 1 + ) + (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) + i32.const 3 + ) + (func $start:function-expression~anonymous|3 (result i32) + i32.const 1 + ) + (func $function-expression/semanticallyAnonymous + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2064 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:function-expression ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1145,63 +1291,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1936 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) (local $1 i32) @@ -1258,12 +1347,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1276,7 +1364,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s @@ -1430,65 +1520,9 @@ i32.store align=1 local.get $0 ) - (func $function-expression/semanticallyAnonymous - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2156 - i32.lt_s - if - i32.const 34944 - i32.const 34992 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2064 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + (func $start:function-expression~someName|2 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $function-expression/FieldClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $function-expression/FieldClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - end + (func $start:function-expression~anonymous|7 (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1508,18 +1542,13 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1472 i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - ) - (func $~start - call $start:function-expression + i32.const 1472 ) (func $start:function-expression (local $0 i32) @@ -1922,34 +1951,6 @@ call $~lib/builtins/abort unreachable ) - (func $start:function-expression~anonymous|7 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2156 - i32.lt_s - if - i32.const 34944 - i32.const 34992 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1472 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1472 - ) (func $function-expression/testLocal~anonymous|0 (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/function-inline-regressions.release.wat b/tests/compiler/function-inline-regressions.release.wat index 8fb2f2a946..0f2d81b39f 100644 --- a/tests/compiler/function-inline-regressions.release.wat +++ b/tests/compiler/function-inline-regressions.release.wat @@ -1,16 +1,10 @@ (module - (type $0 (func (param i32))) - (type $1 (func (param i32 i32 i32) (result i32))) + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32))) (memory $0 0) (export "baz" (func $function-inline-regressions/baz)) (export "foo" (func $function-inline-regressions/foo)) (export "memory" (memory $0)) - (func $function-inline-regressions/baz (param $0 i32) - local.get $0 - if - unreachable - end - ) (func $function-inline-regressions/foo (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 @@ -39,4 +33,10 @@ i32.store local.get $3 ) + (func $function-inline-regressions/baz (param $0 i32) + local.get $0 + if + unreachable + end + ) ) diff --git a/tests/compiler/function-types.release.wat b/tests/compiler/function-types.release.wat index 726e8230ce..5b3f80a227 100644 --- a/tests/compiler/function-types.release.wat +++ b/tests/compiler/function-types.release.wat @@ -27,12 +27,6 @@ local.get $1 i32.add ) - (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) - i64.const 30 - ) - (func $function-types/makeAdder~anonymous|0 (param $0 f64) (param $1 f64) (result f64) - f64.const 4 - ) (func $~start (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -213,4 +207,10 @@ call $~lib/builtins/abort unreachable ) + (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) + i64.const 30 + ) + (func $function-types/makeAdder~anonymous|0 (param $0 f64) (param $1 f64) (result f64) + f64.const 4 + ) ) diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat index b31fd6bd03..9794ae6bb1 100644 --- a/tests/compiler/getter-call.release.wat +++ b/tests/compiler/getter-call.release.wat @@ -37,51 +37,6 @@ (export "test" (func $getter-call/test)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -626,6 +581,202 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $getter-call/C + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1500 + i32.lt_s + if + i32.const 34288 + i32.const 34336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34272 + i32.const 0 + i32.store + i32.const 35840 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34272 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34272 + i32.const 35844 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34272 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -740,400 +891,48 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34272 - i32.const 0 - i32.store - i32.const 35840 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34272 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34272 - i32.const 35844 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34272 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34268 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34268 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34268 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__visit_members local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1193,12 +992,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1211,7 +1009,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -1366,101 +1166,299 @@ memory.fill local.get $0 ) - (func $getter-call/C#get:x~anonymous|0 (result i32) - i32.const 42 + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34268 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28%29=>i32> - block $getter-call/C - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid - end - return + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34268 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - return + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - return end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1500 - i32.lt_s + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 34288 - i32.const 34336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34268 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34268 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.set $~lib/rt/itcms/state end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34268 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace + i32.const 0 ) (func $getter-call/test (result i32) (local $0 i32) @@ -1552,4 +1550,7 @@ call $~lib/builtins/abort unreachable ) + (func $getter-call/C#get:x~anonymous|0 (result i32) + i32.const 42 + ) ) diff --git a/tests/compiler/getter-setter.release.wat b/tests/compiler/getter-setter.release.wat index dc779d8714..b626215eec 100644 --- a/tests/compiler/getter-setter.release.wat +++ b/tests/compiler/getter-setter.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (memory $0 1) diff --git a/tests/compiler/heap.release.wat b/tests/compiler/heap.release.wat index 14a0518c9b..cf51676de3 100644 --- a/tests/compiler/heap.release.wat +++ b/tests/compiler/heap.release.wat @@ -4,8 +4,8 @@ (type $2 (func)) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32 i32 i32))) + (type $5 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $heap/ptr (mut i32) (i32.const 0)) @@ -408,119 +408,77 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u + i32.load + local.set $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 i32.const 1056 - i32.const 382 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $3 + i32.const -4 i32.and - i32.const 4 + local.get $2 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + local.tee $4 + i32.const 16 + i32.ge_u if + local.get $1 + local.get $2 local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 i32.const 4 i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1056 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 + i32.const -2 + i32.and + i32.store local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.const 4 i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1056 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -602,32 +560,35 @@ i32.const 33936 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 1120 - i32.const 1056 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.const 12 - i32.le_u + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select if (result i32) - i32.const 12 + i32.const 1 else - local.get $0 - i32.const 19 - i32.add - i32.const -16 + local.get $1 + i32.load + i32.const 1 i32.and - i32.const 4 - i32.sub end + if + i32.const 0 + i32.const 1056 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -757,77 +718,64 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1120 i32.const 1056 - i32.const 361 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 32 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load i32.const -4 i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 16 + memory.copy + local.get $1 + i32.const 33932 i32.ge_u if local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 4 - i32.sub + i32.load i32.const 1 i32.or i32.store local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store end + local.get $2 ) (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -840,8 +788,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $3 local.get $2 i32.const 256 i32.ge_u @@ -869,7 +815,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $3 + memory.size + local.tee $3 i32.const 16 i32.shl i32.const 4 @@ -883,7 +830,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.set $1 + local.get $3 + local.get $1 local.get $1 local.get $3 i32.lt_s @@ -946,67 +895,119 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $1 - i32.load - i32.const 1 - i32.and - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1056 - i32.const 562 - i32.const 3 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 32 - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - i32.const 4 - i32.add - local.get $1 - i32.const 4 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - memory.copy - local.get $1 - i32.const 33932 - i32.ge_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if + local.get $3 + i32.const 4 + i32.add local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 local.get $1 - i32.load - i32.const 1 - i32.or - i32.store + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else local.get $0 + i32.const 1572 + i32.add local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.gt_u + if + i32.const 0 + i32.const 1056 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) (func $~start (local $0 i32) @@ -1044,12 +1045,12 @@ call $~lib/rt/tlsf/moveBlock local.set $0 else + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + call $~lib/rt/tlsf/checkUsedBlock + local.set $0 block $__inlined_func$~lib/rt/tlsf/reallocateBlock$53 - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.set $0 i32.const 32 call $~lib/rt/tlsf/prepareSize local.tee $5 diff --git a/tests/compiler/import-memory.release.wat b/tests/compiler/import-memory.release.wat index be4cb9b4ae..2b56107252 100644 --- a/tests/compiler/import-memory.release.wat +++ b/tests/compiler/import-memory.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) (import "env" "memory" (memory $0 1)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (data $0 (i32.const 1036) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00i\00m\00p\00o\00r\00t\00-\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") diff --git a/tests/compiler/incremental-gc/call-indirect.release.wat b/tests/compiler/incremental-gc/call-indirect.release.wat index 709def24e2..f43270e2d3 100644 --- a/tests/compiler/incremental-gc/call-indirect.release.wat +++ b/tests/compiler/incremental-gc/call-indirect.release.wat @@ -2,8 +2,8 @@ (type $0 (func)) (type $1 (func (param i32) (result i32))) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) + (type $3 (func (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32) (result i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) @@ -40,51 +40,6 @@ (export "issue_2923" (func $incremental-gc/call-indirect/issue_2923)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 1376 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -237,168 +192,271 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1312 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 + local.set $0 + loop $while-continue|1 local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34352 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1072 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34352 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34352 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1312 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1312 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 i32.load local.tee $3 @@ -408,45 +466,202 @@ if i32.const 0 i32.const 1312 - i32.const 203 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $3 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.tee $3 + i32.const 12 + i32.lt_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.const 0 + i32.const 1312 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1312 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and i32.add local.tee $4 i32.load @@ -629,459 +844,381 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1312 - i32.const 382 - i32.const 14 + i32.const 1376 + i32.const 1072 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1312 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - else - local.get $0 - i32.const 1572 + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1376 + i32.const 1312 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $1 - i32.gt_u + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if i32.const 0 i32.const 1312 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end + local.get $5 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.load + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + i32.gt_u if - return + i32.const 0 + i32.const 1312 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - local.get $3 - i32.const 8 + if + i32.const 0 + i32.const 1312 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub local.tee $3 - i32.const 1 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34352 - i32.const 0 - i32.store - i32.const 35920 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34352 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34352 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34352 - i32.const 35924 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34352 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34352 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $incremental-gc/call-indirect/B + block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> + block $incremental-gc/call-indirect/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid + end + return + end + return end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1072 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34352 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34352 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1312 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - local.get $2 - local.get $2 + local.get $0 i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + call $~lib/rt/itcms/__visit + return end + return end - i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1211,379 +1348,350 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1376 - i32.const 1072 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1376 - i32.const 1312 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 + i32.const 1 + local.get $1 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34352 + i32.const 0 + i32.store + i32.const 35920 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34352 + i32.add i32.const 0 - i32.lt_s - if - unreachable + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1312 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $5 + i32.const 34352 + i32.const 35924 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34352 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1312 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + local.get $1 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1312 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1312 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1312 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $incremental-gc/call-indirect/B - block $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> - block $incremental-gc/call-indirect/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $incremental-gc/call-indirect/A $~lib/function/Function<%28incremental-gc/call-indirect/A%29=>i32> $incremental-gc/call-indirect/B $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1584 - i32.lt_s + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 1376 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1072 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.const 20 + i32.add + call $~lib/rt/__visit_members local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end + end + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $incremental-gc/call-indirect/issue_2923 (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1440 + i32.store offset=4 + local.get $0 + i32.const 1440 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer return end + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) (func $~start @@ -1735,111 +1843,4 @@ call $~lib/builtins/abort unreachable ) - (func $incremental-gc/call-indirect/issue_2923 (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1584 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1584 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1440 - i32.store offset=4 - local.get $0 - i32.const 1440 - i32.load - call_indirect (type $1) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1584 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/infer-array.release.wat b/tests/compiler/infer-array.release.wat index 07fd25eb5e..a256276d6d 100644 --- a/tests/compiler/infer-array.release.wat +++ b/tests/compiler/infer-array.release.wat @@ -1,13 +1,13 @@ (module (type $0 (func (param i32))) - (type $1 (func)) - (type $2 (func (param i32 i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) (type $3 (func (param i32 i32) (result i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32 i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -70,186 +70,68 @@ (data $25 (i32.const 2160) "\r\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\1a\00\00\02\01\00\00\02\19\00\00 \00\00\00\02a\00\00\02a\00\00\02\01\00\00\02A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1744 - call $~lib/rt/itcms/__visit - i32.const 2048 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$154 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34984 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$154 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.const 35008 + i32.const 35056 i32.const 1 - else - local.get $1 - i32.const 2160 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 2164 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + local.get $1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 local.get $3 - select + if + local.get $1 + local.get $3 + local.get $5 + memory.copy + end + local.get $1 + i32.store + i32.const 16 local.get $2 - i32.or - i32.store offset=4 - local.get $0 + call $~lib/rt/itcms/__new + local.tee $2 local.get $1 - i32.store offset=8 + i32.store + local.get $2 local.get $1 - local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 local.get $2 - local.get $0 + local.get $5 i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -275,851 +157,1432 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1280 + i32.const 1488 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $7 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $5 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1744 + i32.const 1488 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $4 + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $6 + local.get $0 + i32.load + local.tee $3 + i32.const 20 + i32.sub + local.tee $5 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $5 + local.get $6 + i32.store offset=16 + local.get $3 + local.set $4 + br $__inlined_func$~lib/rt/itcms/__renew$149 + end + local.get $6 + local.get $5 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $4 + local.get $3 + local.get $6 + local.get $5 + i32.load offset=16 + local.tee $5 + local.get $5 + local.get $6 + i32.gt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s if - i32.const 0 - i32.const 1424 - i32.const 284 - i32.const 14 + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + (func $~lib/array/Array#__get (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s if - i32.const 0 - i32.const 1424 - i32.const 201 - i32.const 14 + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 i32.eqz if - i32.const 0 - i32.const 1424 - i32.const 203 - i32.const 14 + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 i32.load - i32.const -4 - i32.and + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 2 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add local.tee $2 - i32.const 12 - i32.lt_u + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1088 i32.const 1424 - i32.const 233 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u + i32.const 12 + i32.le_u if (result i32) - local.get $2 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $2 local.get $2 - i32.const 1073741820 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 i32.ge_u - select + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 + i32.const 16 + i32.shl i32.const 4 i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $2 - i32.const 16 - i32.lt_u local.get $5 - i32.const 23 - i32.lt_u + local.get $2 + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u if i32.const 0 i32.const 1424 - i32.const 251 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl + local.get $4 local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl + call $~lib/rt/tlsf/removeBlock local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 + local.set $6 local.get $5 - i32.const 2 - i32.shl + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + i32.const 15 + i32.and if i32.const 0 i32.const 1424 - i32.const 382 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $6 + i32.const -4 i32.and - i32.const 4 + local.get $5 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 local.tee $3 + i32.const 16 + i32.ge_u if - local.get $3 + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 i32.const 4 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + local.get $5 + i32.add + local.tee $5 local.get $3 - local.get $1 - i32.const 16 + i32.const 4 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 + global.get $~lib/rt/itcms/white i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $infer-array/Ref#constructor (result i32) (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 i32.lt_s - else + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - end - if - unreachable - end - i32.const 34992 - i32.const 0 - i32.store - i32.const 36560 - i32.const 0 - i32.store - loop $for-loop|0 + i32.store local.get $0 - i32.const 23 - i32.lt_u + i32.eqz if - local.get $0 - i32.const 2 - i32.shl - i32.const 34992 - i32.add + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34992 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 34992 - i32.const 36564 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34992 - global.set $~lib/rt/tlsf/ROOT + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + if + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 i32.load offset=4 - i32.const -4 + i32.const -2 + local.get $3 + i32.rotl i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 i32.eq + i32.and if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34984 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + call $~lib/rt/itcms/Object#makeGray end - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$154 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34984 + i32.lt_u i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne if i32.const 0 i32.const 1152 - i32.const 229 - i32.const 20 + i32.const 128 + i32.const 18 call $~lib/builtins/abort unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$154 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2160 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2164 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-array/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 34984 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2216 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 i32.lt_u if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 + local.get $1 i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34984 - i32.ge_u + local.tee $3 if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + local.get $3 + call $~lib/rt/itcms/__visit end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 0 + i32.const 35008 + i32.const 35056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1145,651 +1608,352 @@ i32.shl i32.add i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1088 - i32.const 1424 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 + i32.sub + local.set $1 end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - local.get $5 + local.get $1 + i32.const 16 + i32.lt_u local.get $2 - i32.load - i32.const -4 + i32.const 23 + i32.lt_u i32.and - i32.gt_u + i32.eqz if i32.const 0 i32.const 1424 - i32.const 501 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock + local.get $0 local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + i32.const 2 + i32.shl i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1424 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz local.get $2 i32.const 4 + i32.shl i32.add - local.get $5 + i32.const 2 + i32.shl i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.load offset=96 else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 + local.get $0 i32.load - i32.const -4 - i32.and + i32.const -1 + local.get $2 + i32.const 1 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 + i32.shl i32.and - i32.store + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size local.tee $1 i32.const 0 - local.get $0 - memory.fill - local.get $1 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34992 + i32.const 0 + i32.store + i32.const 36560 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34992 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34992 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34992 + i32.const 36564 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34992 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 1152 - i32.const 295 + i32.const 1424 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 + i32.const 19 + i32.add + i32.const -16 i32.and - i32.eq + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $0 - i32.const 20 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz + local.tee $5 i32.eq if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $infer-array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end + local.set $4 + local.get $5 + local.set $1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + else local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1572 i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:infer-array - ) - (func $~lib/array/Array#__get (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store local.get $0 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1744 + call $~lib/rt/itcms/__visit + i32.const 2048 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.load - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/array/Array#__get (param $0 i32) global.get $~lib/memory/__stack_pointer @@ -1836,55 +2000,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - if - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1935,319 +2050,268 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $infer-array/Ref#constructor (result i32) + (func $~start + call $start:infer-array + ) + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34984 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 0 - i32.lt_s + i32.const 3 + i32.and + i32.ne if - i32.const 1280 - i32.const 1488 - i32.const 130 - i32.const 22 + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.add - local.tee $6 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u + i32.const 34984 + i32.lt_u if - local.get $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1744 - i32.const 1488 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$149 - i32.const 1073741820 - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - local.get $4 - i32.const 1073741820 - i32.ge_u - select - local.tee $4 - i32.const 8 - local.get $3 - local.get $3 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $3 - local.get $3 - local.get $4 - i32.lt_u - select - local.tee $5 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34984 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.load - local.tee $4 - i32.const 20 + i32.const 4 i32.sub - local.tee $7 - i32.load - i32.const -4 + local.set $2 + local.get $0 + i32.const 15 i32.and - i32.const 16 - i32.sub - i32.le_u + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end if - local.get $7 - local.get $5 - i32.store offset=16 - local.get $4 - local.set $3 - br $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - local.get $7 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $4 - local.get $5 - local.get $7 - i32.load offset=16 - local.tee $7 - local.get $5 - local.get $7 - i32.lt_u - select - memory.copy - end - local.get $3 - local.get $4 - i32.ne - if - local.get $0 - local.get $3 + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $2 + call $~lib/rt/tlsf/insertBlock end - local.get $0 - local.get $5 - i32.store offset=8 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $6 - i32.store offset=12 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - if - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $start:infer-array (local $0 i32) @@ -2681,67 +2745,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2216 - i32.lt_s - if - i32.const 35008 - i32.const 35056 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.shl - local.tee $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $1 - local.get $3 - if - local.get $1 - local.get $3 - local.get $5 - memory.copy - end - local.get $1 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) ) diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat index bfd2ec7d06..788794869f 100644 --- a/tests/compiler/infer-generic.release.wat +++ b/tests/compiler/infer-generic.release.wat @@ -1,14 +1,14 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 f32 i32 i32) (result i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 f32 i32 i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param f32) (result f32))) - (type $9 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) + (type $9 (func (param f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -51,61 +51,6 @@ (export "test5" (func $export:infer-generic/test2)) (export "inferAssert" (func $export:infer-generic/inferAssert)) (start $~start) - (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) - local.get $1 - f32.const 0 - f32.ne - i32.const 0 - local.get $0 - select - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1152 - call $~lib/rt/itcms/__visit - i32.const 1424 - call $~lib/rt/itcms/__visit - i32.const 1232 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1296 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -258,6 +203,51 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $export:infer-generic/test2 (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -650,119 +640,217 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-generic/Ref + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - local.get $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1568 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1568 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -844,427 +932,200 @@ i32.const 34432 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1568 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1568 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34428 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 1424 + call $~lib/rt/itcms/__visit + i32.const 1232 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1296 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34428 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1232 + i32.const 1296 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34428 - i32.ge_u + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1568 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1232 - i32.const 1296 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total i32.const 1 i32.shl i32.const 1024 @@ -1330,8 +1191,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1359,7 +1218,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1373,7 +1233,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1545,93 +1407,6 @@ memory.fill local.get $1 ) - (func $infer-generic/test1 (param $0 f32) (result f32) - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $infer-generic/Ref - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34448 - i32.const 34496 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -1711,7 +1486,7 @@ i32.const 1152 i32.const 1200 i32.load - call_indirect (type $2) + call_indirect (type $4) local.set $0 local.get $1 i32.const 1 @@ -1839,50 +1614,276 @@ call $~lib/builtins/abort unreachable ) - (func $export:infer-generic/test2 (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1296 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34428 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + global.set $~lib/rt/itcms/state end - i32.const 34448 - i32.const 34496 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 + ) + (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) + local.get $1 + f32.const 0 + f32.ne + i32.const 0 + local.get $0 + select + ) + (func $infer-generic/test1 (param $0 f32) (result f32) + local.get $0 ) (func $export:infer-generic/inferAssert (param $0 i32) global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/inlining-recursive.release.wat b/tests/compiler/inlining-recursive.release.wat index 79a6b7c99a..dc115bc899 100644 --- a/tests/compiler/inlining-recursive.release.wat +++ b/tests/compiler/inlining-recursive.release.wat @@ -5,10 +5,10 @@ (export "bar" (func $inlining-recursive/baz)) (export "baz" (func $inlining-recursive/baz)) (export "memory" (memory $0)) - (func $inlining-recursive/foo - call $inlining-recursive/foo - ) (func $inlining-recursive/baz call $inlining-recursive/baz ) + (func $inlining-recursive/foo + call $inlining-recursive/foo + ) ) diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index d8a449feae..0da8126d77 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func)) - (type $1 (func (result i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32) (result i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32) (result i32))) (type $6 (func (param i32 i32 i32) (result f64))) (type $7 (func (param i32 i32 i32 i32))) - (type $8 (func (param i32 i32 i64))) - (type $9 (func (param f64) (result f64))) + (type $8 (func (param f64) (result f64))) + (type $9 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -45,57 +45,6 @@ (export "bar" (func $inlining/bar)) (export "memory" (memory $0)) (start $~start) - (func $inlining/test (result i32) - i32.const 3 - ) - (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) - i32.const 2 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1328 - call $~lib/rt/itcms/__visit - i32.const 1136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -640,119 +589,319 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1472 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $inlining/Baz + block $inlining/Bar + block $inlining/Foo + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + return + end + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + unreachable + ) + (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 f64) + (local $4 f64) local.get $0 - i32.load offset=1568 - local.tee $3 + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 2146435072 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + local.get $0 + f64.add + return + end + local.get $1 + i32.const 1048576 + i32.lt_u + if (result i32) + local.get $0 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 1472 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + return end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.const 3 + i32.div_u + i32.const 696219795 i32.add + else local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add end + local.set $1 local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end + i64.const -9223372036854775808 + i64.and local.get $1 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $4 + local.get $4 + f64.mul + local.get $4 + local.get $0 + f64.div + f64.mul + local.set $3 + local.get $0 local.get $4 - i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $3 + local.get $3 + f64.mul + local.get $3 + f64.mul + local.get $3 + f64.const 0.14599619288661245 + f64.mul + f64.const -0.758397934778766 + f64.add + f64.mul + f64.add + f64.mul + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $0 + f64.mul + f64.div + local.set $3 + local.get $0 local.get $0 local.get $3 - i32.store offset=1568 local.get $0 + f64.sub + local.get $0 + local.get $0 + f64.add + local.get $3 + f64.add + f64.div + f64.mul + f64.add + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -834,391 +983,162 @@ i32.const 34336 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34324 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1200 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34324 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34324 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1472 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl + i32.const 20 i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + call $~lib/rt/__visit_members local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1320,8 +1240,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1349,7 +1267,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1363,7 +1282,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1488,52 +1409,315 @@ i32.and i32.store end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~start + call $start:inlining + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34324 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34324 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end i32.const 0 - local.get $0 - memory.fill - local.get $1 ) (func $start:inlining (local $0 i32) @@ -1554,7 +1738,7 @@ i32.const 2 i32.const 1104 i32.load - call_indirect (type $2) + call_indirect (type $5) drop global.get $~lib/memory/__stack_pointer i32.const 123 @@ -1746,126 +1930,11 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 i32) - (local $2 i64) - (local $3 f64) - (local $4 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.add - return - end - local.get $1 - i32.const 1048576 - i32.lt_u - if (result i32) - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - return - end - local.get $1 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $1 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add - end - local.set $1 - local.get $2 - i64.const -9223372036854775808 - i64.and - local.get $1 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $4 - local.get $4 - f64.mul - local.get $4 - local.get $0 - f64.div - f64.mul - local.set $3 - local.get $0 - local.get $4 - local.get $3 - local.get $3 - f64.const 1.6214297201053545 - f64.mul - f64.const -1.8849797954337717 - f64.add - f64.mul - f64.const 1.87595182427177 - f64.add - local.get $3 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.get $3 - f64.const 0.14599619288661245 - f64.mul - f64.const -0.758397934778766 - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.mul - f64.div - local.set $3 - local.get $0 - local.get $0 - local.get $3 - local.get $0 - f64.sub - local.get $0 - local.get $0 - f64.add - local.get $3 - f64.add - f64.div - f64.mul - f64.add + (func $inlining/test (result i32) + i32.const 3 + ) + (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) + i32.const 2 ) (func $inlining/foo (param $0 i32) (param $1 i32) (param $2 i32) (result f64) local.get $0 @@ -1902,72 +1971,4 @@ f64.add f64.div ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $inlining/Baz - block $inlining/Bar - block $inlining/Foo - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1556 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:inlining - ) ) diff --git a/tests/compiler/instanceof.release.wat b/tests/compiler/instanceof.release.wat index bdbf1e3b54..3605a2ca97 100644 --- a/tests/compiler/instanceof.release.wat +++ b/tests/compiler/instanceof.release.wat @@ -49,140 +49,65 @@ (data $9 (i32.const 1488) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $instanceof/a - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/b - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/an - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/child - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/childAsParent - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/animal - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/cat - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/blackcat - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableAnimal - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableCat - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/nullableBlackcat - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/w - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/y - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $instanceof/z - local.tee $0 + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Y$78 (result i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 19 + i32.eq + br_if $is_instance + local.get $0 + i32.const 22 + i32.eq + br_if $is_instance i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + br $__inlined_func$~instanceof|instanceof/Y$78 end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + i32.const 1 end + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1456 + i32.const 12 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -336,1075 +261,635 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if + memory.grow i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load - local.tee $3 - i32.const 1 + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.const 4 - i32.add + call $~lib/rt/tlsf/removeBlock local.get $1 i32.load + local.tee $3 i32.const -4 i32.and - i32.add + i32.const 28 + i32.sub local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.const 28 + i32.or i32.store local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 32 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $3 + local.get $4 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else local.get $1 - call $~lib/rt/tlsf/removeBlock + local.get $3 + i32.const -2 + i32.and + i32.store local.get $1 - local.get $6 i32.const 4 i32.add - local.get $3 + local.get $1 + i32.load i32.const -4 i32.and i32.add - local.tee $3 + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 - local.get $2 - i32.const 2 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white i32.or - i32.store - local.get $3 - i32.const -4 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.or + i32.store offset=4 + local.get $0 local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $2 i32.add - i32.ne + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 if (result i32) - local.get $2 - i32.const 4 - i32.shr_u + block $__inlined_func$~instanceof|instanceof/X$76 (result i32) + block $is_instance + block $tablify|0 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 16 + i32.sub + br_table $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 + end + i32.const 0 + br $__inlined_func$~instanceof|instanceof/X$76 + end + i32.const 1 + end else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.const 0 end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and i32.eqz if i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 + i32.const 1456 + i32.const 12 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 + i32.store local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + if (result i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 22 + i32.eq + else + i32.const 0 + end + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 1456 + i32.const 12 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.const -16 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $"instanceof/assertDynamicFalse" (param $0 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if (result i32) + block $__inlined_func$~instanceof|instanceof/Y$82 (result i32) + block $is_instance + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 19 + i32.eq + br_if $is_instance + local.get $0 + i32.const 22 + i32.eq + br_if $is_instance + i32.const 0 + br $__inlined_func$~instanceof|instanceof/Y$82 + end + i32.const 1 end else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 0 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + if + i32.const 0 + i32.const 1456 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s if - return + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - local.get $4 - i32.const 2 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 8 - i32.sub + i32.const -4 + i32.and local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 + i32.load offset=96 + i32.eq + if local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34368 - i32.const 0 - i32.store - i32.const 35936 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34368 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34368 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34368 - i32.const 35940 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34368 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34356 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 i32.shl i32.add - global.set $~lib/rt/itcms/threshold + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 i32.eqz if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 i32.load - i32.const -4 + local.tee $3 + i32.const 1 i32.and - i32.const 28 - i32.lt_u + i32.eqz if i32.const 0 i32.const 1392 - i32.const 501 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.const 4 + i32.add local.get $1 i32.load - local.tee $3 i32.const -4 i32.and - i32.const 28 - i32.sub + i32.add local.tee $4 - i32.const 16 - i32.ge_u + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store + i32.add local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 + i32.const -4 i32.and + i32.add + local.tee $3 i32.store local.get $1 i32.const 4 @@ -1414,118 +899,273 @@ i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $4 i32.load - i32.const -3 + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 i32.and + i32.add + local.tee $3 i32.store end - local.get $1 + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=12 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or i32.store offset=4 local.get $1 - local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add + i32.const 2 + i32.shl i32.add - global.set $~lib/rt/itcms/total local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + i32.store offset=96 local.get $0 - ) - (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/X>" (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - if (result i32) - block $__inlined_func$~instanceof|instanceof/X$76 (result i32) - block $is_instance - block $tablify|0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 16 - i32.sub - br_table $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 $tablify|0 $is_instance $tablify|0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $instanceof/IE + block $instanceof/Z + block $instanceof/IC + block $instanceof/ID + block $instanceof/Y + block $instanceof/IA + block $instanceof/IB + block $instanceof/X + block $instanceof/W + block $instanceof/BlackCat + block $instanceof/Cat + block $instanceof/Animal + block $instanceof/SomethingElse + block $instanceof/Parent + block $instanceof/Child + block $instanceof/Parent + block $instanceof/Child + block $instanceof/C + block $instanceof/B + block $instanceof/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return end - i32.const 0 - br $__inlined_func$~instanceof|instanceof/X$76 + return end - i32.const 1 + return end - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1456 - i32.const 12 - i32.const 5 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + unreachable ) - (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Y>" (param $0 i32) + (func $"instanceof/assertDynamicFalse" (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1549,33 +1189,19 @@ i32.store local.get $0 if (result i32) - block $__inlined_func$~instanceof|instanceof/Y$78 (result i32) - block $is_instance - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 19 - i32.eq - br_if $is_instance - local.get $0 - i32.const 22 - i32.eq - br_if $is_instance - i32.const 0 - br $__inlined_func$~instanceof|instanceof/Y$78 - end - i32.const 1 - end + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 22 + i32.eq else i32.const 0 end - i32.eqz if i32.const 0 i32.const 1456 - i32.const 12 + i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable @@ -1585,9 +1211,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $"instanceof/assertDynamicTrue<~lib/object/Object,instanceof/Z>" (param $0 i32) + (func $instanceof/Cat#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1602,39 +1228,76 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $instanceof/Animal#constructor + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - if (result i32) - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 22 - i32.eq - else - i32.const 0 + ) + (func $instanceof/Animal#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 34384 + i32.const 34432 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 1456 + global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $"instanceof/assertDynamicFalse" (param $0 i32) + (func $instanceof/A#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1649,225 +1312,418 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/object/Object#constructor + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 if (result i32) - block $__inlined_func$~instanceof|instanceof/Y$82 (result i32) - block $is_instance - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 19 - i32.eq - br_if $is_instance - local.get $0 - i32.const 22 - i32.eq - br_if $is_instance + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if i32.const 0 - br $__inlined_func$~instanceof|instanceof/Y$82 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - i32.const 1 + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else i32.const 0 end + if + unreachable + end + i32.const 34368 + i32.const 0 + i32.store + i32.const 35936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 1456 - i32.const 19 - i32.const 5 + i32.const 1392 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"instanceof/assertDynamicFalse" (param $0 i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.set $1 local.get $0 - if (result i32) - local.get $0 - i32.const 8 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 i32.sub - i32.load - i32.const 22 + local.tee $5 i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - i32.const 0 + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1456 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $instanceof/IE - block $instanceof/Z - block $instanceof/IC - block $instanceof/ID - block $instanceof/Y - block $instanceof/IA - block $instanceof/IB - block $instanceof/X - block $instanceof/W - block $instanceof/BlackCat - block $instanceof/Cat - block $instanceof/Animal - block $instanceof/SomethingElse - block $instanceof/Parent - block $instanceof/Child - block $instanceof/Parent - block $instanceof/Child - block $instanceof/C - block $instanceof/B - block $instanceof/A - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $instanceof/A $instanceof/B $instanceof/C $instanceof/Child $instanceof/Parent $instanceof/Child $instanceof/Parent $instanceof/SomethingElse $instanceof/Animal $instanceof/Cat $instanceof/BlackCat $instanceof/W $instanceof/X $instanceof/IB $instanceof/IA $instanceof/Y $instanceof/ID $instanceof/IC $instanceof/Z $instanceof/IE $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $instanceof/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/an + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/child + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/childAsParent + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/animal + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/cat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - unreachable - ) - (func $~start - call $start:instanceof - ) - (func $instanceof/A#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s + global.get $instanceof/blackcat + local.tee $0 if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz + global.get $instanceof/nullableAnimal + local.tee $0 if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor + global.get $instanceof/nullableCat local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/nullableBlackcat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/w + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/y + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof/z + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) - (func $instanceof/Animal#constructor (param $0 i32) (result i32) + (func $instanceof/Y#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1890,7 +1746,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 19 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1900,7 +1756,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/object/Object#constructor + call $instanceof/X#constructor local.tee $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1909,7 +1765,7 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $instanceof/Cat#constructor (param $0 i32) (result i32) + (func $instanceof/X#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1932,7 +1788,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 13 + i32.const 16 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -1942,7 +1798,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $instanceof/Animal#constructor + call $~lib/object/Object#constructor local.tee $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1990,89 +1846,268 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $instanceof/X#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + (func $~start + call $start:instanceof ) - (func $instanceof/Y#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 19 - call $~lib/rt/itcms/__new + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.store + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $instanceof/X#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) (func $start:instanceof (local $0 i32) @@ -3554,38 +3589,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - if - i32.const 34384 - i32.const 34432 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/issues/1095.release.wat b/tests/compiler/issues/1095.release.wat index b5ae2294e0..542118d3ea 100644 --- a/tests/compiler/issues/1095.release.wat +++ b/tests/compiler/issues/1095.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -38,183 +38,6 @@ (data $11 (i32.const 1648) "\05\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$117 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34440 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$117 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1648 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1652 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -631,585 +454,533 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 + i32.const 1120 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$117 local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34440 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$117 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $1 - local.get $4 + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1648 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1652 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 + local.get $0 local.get $1 - i32.const 0 i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1095/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - unreachable - end - i32.const 34448 - i32.const 0 - i32.store - i32.const 36016 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34448 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34448 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - i32.const 34448 - i32.const 36020 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34448 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34440 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.load offset=4 + local.get $1 + i32.ctz local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne if i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 1392 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34440 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34440 - i32.ge_u + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34448 + i32.const 0 + i32.store + i32.const 36016 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34448 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34448 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.add + local.set $1 + br $for-loop|1 end end - i32.const 10 - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 + i32.const 34448 + i32.const 36020 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34448 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.const 256 - i32.lt_u + i64.extend_i32_u + i64.lt_u if - local.get $1 + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 i32.const 4 - i32.shr_u - local.set $1 - else + i32.add local.get $1 - i32.const 536870910 - i32.lt_u + i32.gt_u if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $3 local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 i32.sub - local.set $2 + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 - i32.lt_u + i32.wrap_i64 + i32.const -16 i32.and - i32.eqz + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $0 - local.get $2 + local.get $1 + local.get $4 i32.const 2 - i32.shl + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 - i32.shl - i32.and + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - if (result i32) + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1311,8 +1082,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1340,7 +1109,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1354,7 +1124,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1535,247 +1307,476 @@ local.get $0 i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34440 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1456 + call $issues/1095/Foo#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1672 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store offset=12 + local.get $1 + i32.eqz + if + i32.const 1488 + i32.const 1616 + i32.const 8 + i32.const 13 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.store offset=4 + local.get $0 + local.get $1 + call $issues/1095/Foo#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34464 + i32.const 34512 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34440 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - i32.const 20 - i32.sub i32.load offset=4 - i32.const 3 + local.tee $1 + i32.const -4 i32.and - local.tee $0 + global.set $~lib/rt/itcms/iter global.get $~lib/rt/itcms/white i32.eqz - i32.eq + local.get $1 + i32.const 3 + i32.and + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34440 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq + global.get $~lib/rt/itcms/total local.get $0 - i32.const 3 - i32.eq + i32.load + i32.const -4 i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34440 + i32.ge_u if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/1095/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $invalid - end - return + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - return + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.const 10 return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1672 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34440 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1672 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1672 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $0 - i32.const 1456 - call $issues/1095/Foo#set:bar - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1672 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $1 - i32.store offset=12 - local.get $1 - i32.eqz - if - i32.const 1488 - i32.const 1616 - i32.const 8 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $issues/1095/Foo#set:bar - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34464 - i32.const 34512 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 ) ) diff --git a/tests/compiler/issues/1225.release.wat b/tests/compiler/issues/1225.release.wat index 10fcd3691c..3a9ede7e7b 100644 --- a/tests/compiler/issues/1225.release.wat +++ b/tests/compiler/issues/1225.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -37,57 +37,6 @@ (export "viaThis" (func $issues/1225/viaThis)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $issues/1225/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -240,216 +189,476 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 + local.set $0 + loop $while-continue|1 local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if i32.const 0 i32.const 1392 - i32.const 201 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 + local.get $3 + i32.const -4 i32.and - i32.eqz + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and i32.add local.tee $4 i32.load @@ -632,119 +841,90 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/1225/X + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -826,322 +1006,389 @@ i32.const 34288 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + global.get $issues/1225/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 - i32.and i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34280 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $issues/1225/viaThis (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $issues/1225/x + local.tee $0 + i32.store local.get $0 i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $issues/1225/normal (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $issues/1225/x + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + (local $0 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34280 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + if + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $issues/1225/x + call $issues/1225/normal + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $issues/1225/viaThis + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1456 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $issues/1225/x + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) @@ -1199,12 +1446,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1217,7 +1463,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s @@ -1372,251 +1620,4 @@ memory.fill local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/1225/X - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 34280 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - if - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $issues/1225/x - call $issues/1225/normal - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $issues/1225/viaThis - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1456 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $issues/1225/x - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - ) - (func $issues/1225/normal (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - if - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $issues/1225/x - local.tee $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $issues/1225/viaThis (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - if - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $issues/1225/x - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/issues/1699.release.wat b/tests/compiler/issues/1699.release.wat index 0ba5679b98..5da543848f 100644 --- a/tests/compiler/issues/1699.release.wat +++ b/tests/compiler/issues/1699.release.wat @@ -2,9 +2,9 @@ (type $0 (func)) (type $1 (func (param i32))) (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (result i32))) - (type $5 (func (param i32 i32 i32))) + (type $3 (func (param i32 i32 i32))) + (type $4 (func (param i32 i32))) + (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32 i32))) (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -41,187 +41,6 @@ (data $12 (i32.const 1712) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\02A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1344 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1552 - call $~lib/rt/itcms/__visit - i32.const 1152 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$146 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34508 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$146 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1712 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1716 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -246,1853 +65,2143 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 268 - i32.const 14 + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1152 i32.const 1488 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1488 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1488 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.or + i32.store offset=4 local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 i32.add - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 234 - i32.const 14 + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 251 - i32.const 14 + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store + local.tee $0 + i32.store offset=4 local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.eqz + if + i32.const 1552 + i32.const 1104 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $0 + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz + if + return + end + local.get $0 + i32.eqz if i32.const 0 - i32.const 1488 - i32.const 382 + i32.const 1216 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/itcms/white local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 + i32.const 20 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 + local.get $0 + i32.const 20 i32.sub - local.tee $5 + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.sub + i32.load local.tee $3 - i32.const 20 - i32.lt_u + i32.const 1 + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 + local.get $3 + i32.const -4 i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 8 - i32.sub + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 34512 - i32.const 0 - i32.store - i32.const 36080 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34512 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34512 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34512 - i32.const 36084 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34512 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34508 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34508 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34508 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1488 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1488 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.get $1 + i32.eqz if - i32.const 1152 - i32.const 1216 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1152 + i32.const 0 i32.const 1488 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 + local.get $0 local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and i32.eqz if i32.const 0 i32.const 1488 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1488 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1488 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 i32.const 4 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$146 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34508 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$146 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store + i32.store offset=8 local.get $2 - i32.const 4 - i32.add + local.get $1 local.get $2 - i32.load - i32.const -4 + i32.load offset=4 + i32.const 3 i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1716 i32.add - local.tee $3 - local.get $3 i32.load - i32.const -3 + i32.const 32 i32.and - i32.store end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 local.set $3 local.get $2 - local.get $1 + i32.load offset=8 + local.set $1 + local.get $0 global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 i32.or i32.store offset=4 - local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 + local.get $1 + local.get $0 + local.get $1 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 local.get $0 - memory.fill - local.get $1 + i32.store offset=8 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if + block $invalid + block $~lib/array/Array + block $issues/1699/MultiAssignmentTest + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + if + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1216 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - i32.const 20 - i32.sub - local.tee $0 i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 local.get $1 local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq - i32.and + i32.lt_u if local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end end - end - ) - (func $start:issues/1699 - (local $0 i32) - (local $1 i32) - (local $2 i32) - memory.size - i32.const 16 - i32.shl - i32.const 34508 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/pinSpace - i32.const 1300 - i32.const 1296 - i32.store - i32.const 1304 - i32.const 1296 - i32.store - i32.const 1296 - global.set $~lib/rt/itcms/toSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1740 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 28 - memory.fill - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 i32.store + local.get $1 local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $7 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $5 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$145 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $4 + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + local.get $3 + local.get $4 + i32.lt_u + select + local.tee $6 + local.get $0 + i32.load + local.tee $3 + i32.const 20 + i32.sub + local.tee $5 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $5 + local.get $6 + i32.store offset=16 + local.get $3 + local.set $4 + br $__inlined_func$~lib/rt/itcms/__renew$145 + end + local.get $6 + local.get $5 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $4 + local.get $3 + local.get $6 + local.get $5 + i32.load offset=16 + local.tee $5 + local.get $5 + local.get $6 + i32.gt_u + select + memory.copy + end + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $7 + i32.store offset=12 + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.store local.get $0 - i32.store offset=4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 + local.get $2 i32.const 1 - call $~lib/rt/itcms/__new + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $0 - local.get $2 - i32.store - local.get $0 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 32 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - call $issues/1699/MultiAssignmentTest#constructor - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.const 1 + i32.load + i32.const -1 local.get $2 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 i32.const 1 - call $~lib/array/Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $2 - call $~lib/array/Array#__set - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34512 + i32.const 0 + i32.store + i32.const 36080 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.load offset=12 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 2 + i32.shl + i32.const 34512 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - call $issues/1699/MultiAssignmentTest#constructor - local.tee $2 - i32.store offset=24 + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - i32.const 1 - i32.gt_s + i32.const 16 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 local.get $0 + i32.const 4 + i32.shl local.get $1 - local.get $2 - call $~lib/array/Array#__set + i32.add + i32.const 2 + i32.shl + i32.const 34512 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34512 + i32.const 36084 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34512 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if i32.const 0 - call $~lib/array/Array#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array#__get + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add local.get $1 - i32.ne + i32.gt_u if i32.const 0 - i32.const 1680 - i32.const 15 - i32.const 3 + i32.const 1488 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array#__get + local.get $3 local.get $1 + i32.const 16 + i32.sub + local.tee $5 i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u if i32.const 0 - i32.const 1680 - i32.const 16 - i32.const 3 + i32.const 1488 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.add - global.set $~lib/memory/__stack_pointer + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if return end - i32.const 34528 - i32.const 34576 - i32.const 1 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - block $invalid - block $~lib/array/Array - block $issues/1699/MultiAssignmentTest - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1699/MultiAssignmentTest $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + end + ) + (func $issues/1699/MultiAssignmentTest#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1740 i32.lt_s - if - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - i32.load offset=4 - local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=12 i32.const 2 - i32.shl + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - loop $while-continue|0 + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34528 + i32.const 34576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:issues/1699 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34508 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - local.get $2 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34508 i32.lt_u if - local.get $1 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 i32.load - local.tee $3 + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34508 + i32.ge_u if - local.get $3 - call $~lib/rt/itcms/__visit + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - unreachable - ) - (func $~start - call $start:issues/1699 + i32.const 0 ) - (func $issues/1699/MultiAssignmentTest#constructor (result i32) + (func $start:issues/1699 (local $0 i32) (local $1 i32) + (local $2 i32) + memory.size + i32.const 16 + i32.shl + i32.const 34508 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 28 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1740 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1740 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 call $~lib/rt/itcms/__new local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner0 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.store + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 local.get $0 + local.get $2 i32.store + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.const 2 - i32.store + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - return - end - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.store offset=4 + local.get $0 + i32.const 32 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - br_if $folding-inner0 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.tee $6 - local.set $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + call $issues/1699/MultiAssignmentTest#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $2 + call $~lib/array/Array#__set + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2100,143 +2209,98 @@ global.get $~lib/memory/__stack_pointer i32.const 1740 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $3 local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.lt_s if - local.get $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$145 - i32.const 1073741820 - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - local.get $4 - i32.const 1073741820 - i32.ge_u - select - local.tee $4 - i32.const 8 - local.get $3 - local.get $3 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $3 - local.get $3 - local.get $4 - i32.lt_u - select - local.tee $5 - local.get $0 - i32.load - local.tee $4 - i32.const 20 - i32.sub - local.tee $7 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $7 - local.get $5 - i32.store offset=16 - local.get $4 - local.set $3 - br $__inlined_func$~lib/rt/itcms/__renew$145 - end - local.get $5 - local.get $7 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $4 - local.get $5 - local.get $7 - i32.load offset=16 - local.tee $7 - local.get $5 - local.get $7 - i32.lt_u - select - memory.copy - end - local.get $3 - local.get $4 - i32.ne + call $issues/1699/MultiAssignmentTest#constructor + local.tee $2 + i32.store offset=24 + local.get $1 + i32.const 1 + i32.gt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + call $~lib/array/Array#__set end - local.get $0 - local.get $5 - i32.store offset=8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $6 - i32.store offset=12 end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 + i32.const 0 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get local.get $1 + i32.ne + if + i32.const 0 + i32.const 1680 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - local.get $2 i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/array/Array#__get + local.get $1 + i32.eq + if + i32.const 0 + i32.const 1680 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 28 i32.add global.set $~lib/memory/__stack_pointer return @@ -2248,67 +2312,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1740 - i32.lt_s - if - i32.const 34528 - i32.const 34576 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 1552 - i32.const 1104 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/issues/1714.release.wat b/tests/compiler/issues/1714.release.wat index 5fc4c4ca7e..7645fdba1b 100644 --- a/tests/compiler/issues/1714.release.wat +++ b/tests/compiler/issues/1714.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32 i32))) - (type $1 (func)) + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33884)) (memory $0 1) diff --git a/tests/compiler/issues/2166.release.wat b/tests/compiler/issues/2166.release.wat index d445b2d6cd..fa61a80944 100644 --- a/tests/compiler/issues/2166.release.wat +++ b/tests/compiler/issues/2166.release.wat @@ -4,9 +4,9 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -43,50 +43,167 @@ (data $13 (i32.const 1632) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1660 + i32.lt_s + if + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$79 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$79 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -632,158 +749,362 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.load + i32.const -4 + i32.and + i32.const 28 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $2 local.get $1 - local.get $4 - i32.const 2 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 i32.and - local.get $3 - i32.const 8 + i32.const 28 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 local.get $1 i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $1 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + global.set $~lib/rt/itcms/total local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34432 + i32.const 20 + i32.add + local.tee $0 i32.const 0 - i32.store - i32.const 36000 i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34432 - i32.add - i32.const 0 - i32.store offset=4 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2166/Test2166Ref2 + block $issues/2166/Test2166Ref1<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34432 + i32.const 0 + i32.store + i32.const 36000 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34432 + i32.add + i32.const 0 + i32.store offset=4 i32.const 0 local.set $1 loop $for-loop|1 @@ -826,585 +1147,167 @@ i32.const 34432 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34428 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34428 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34428 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2166/Test2166Ref2 - block $issues/2166/Test2166Ref1<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2166/Test2166Ref1<~lib/string/String> $issues/2166/Test2166Ref2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) + (func $~start + (local $0 i32) (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -1593,179 +1496,277 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34448 - i32.const 34496 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1660 - i32.lt_s - if - i32.const 34448 - i32.const 34496 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34448 + i32.const 34496 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34428 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$79 - loop $while-continue|1 + local.get $0 + i32.const 34428 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34428 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$79 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) ) diff --git a/tests/compiler/issues/2322/index.release.wat b/tests/compiler/issues/2322/index.release.wat index 026f2c493b..cf2df6b497 100644 --- a/tests/compiler/issues/2322/index.release.wat +++ b/tests/compiler/issues/2322/index.release.wat @@ -33,51 +33,6 @@ (export "test" (func $issues/2322/index/test)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -622,150 +577,192 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2322/lib/Wrapper + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - local.get $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.and local.tee $1 - i32.const 0 - i32.le_s if (result i32) - i32.const 1 + local.get $0 local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - i32.const 0 - end - if - unreachable - end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 local.get $0 - i32.const 23 - i32.lt_u + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if local.get $0 i32.const 2 @@ -816,391 +813,162 @@ i32.const 34240 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34232 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34232 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34232 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + br $while-continue|0 end end ) @@ -1302,8 +1070,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1331,7 +1097,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1345,7 +1112,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1517,67 +1286,299 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2322/lib/Wrapper - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34232 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2322/lib/Wrapper $invalid + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - return + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - return end - return + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34232 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 return end - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34232 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace + i32.const 0 ) (func $issues/2322/index/test (local $0 i32) diff --git a/tests/compiler/issues/2622.release.wat b/tests/compiler/issues/2622.release.wat index 885743588e..2cb8d68623 100644 --- a/tests/compiler/issues/2622.release.wat +++ b/tests/compiler/issues/2622.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) @@ -36,87 +36,6 @@ (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $issues/2622/a - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/b - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $issues/2622/_a/t1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_a/t1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_b/t2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $issues/2622/_b/t2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -661,119 +580,323 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $3 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add + local.get $2 local.get $1 - i32.gt_u + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.load + i32.const -4 + i32.and + i32.const 28 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $2 local.get $1 - local.get $4 - i32.const 2 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 i32.and - local.get $3 - i32.const 8 + i32.const 28 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 local.get $1 i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $1 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill local.get $0 - local.get $3 - i32.store offset=1568 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $issues/2622/_b/T2 + block $issues/2622/_a/T1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -855,592 +978,244 @@ i32.const 34240 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $issues/2622/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $issues/2622/_a/t1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_a/t1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $issues/2622/_b/t2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34236 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__visit_members local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 i32.eqz if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + (local $0 i32) + block $__inlined_func$start:issues/2622$1 memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 i32.const 16 i32.shl - i32.const 4 + i32.const 34236 i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $issues/2622/_b/T2 - block $issues/2622/_a/T1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/2622/_a/T1 $issues/2622/_b/T2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - block $__inlined_func$start:issues/2622$1 - memory.size - i32.const 16 - i32.shl - i32.const 34236 - i32.sub - i32.const 1 + i32.const 1 i32.shr_u global.set $~lib/rt/itcms/threshold i32.const 1172 @@ -1542,38 +1317,264 @@ unreachable end ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - if - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.store + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34236 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/issues/2707.release.wat b/tests/compiler/issues/2707.release.wat index 980e20a05d..4857753a2a 100644 --- a/tests/compiler/issues/2707.release.wat +++ b/tests/compiler/issues/2707.release.wat @@ -1,7 +1,7 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32))) + (type $1 (func (param i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -38,186 +38,6 @@ (elem $0 (i32.const 1) $start:issues/2707~anonymous|0) (export "memory" (memory $0)) (start $~start) - (func $start:issues/2707~anonymous|0 (param $0 i32) (result i32) - i32.const 1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1328 - call $~lib/rt/itcms/__visit - i32.const 1136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34316 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1520 - i32.load - i32.gt_u - if - i32.const 1328 - i32.const 1392 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1524 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -634,163 +454,319 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1472 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1472 - i32.const 389 - i32.const 16 + i32.const 1200 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 1472 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34316 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1520 + i32.load + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and end - local.get $1 - local.get $4 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 + local.get $0 local.get $1 - i32.const 0 i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/function/Function<%28~lib/array/Array%29=>i32> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) - memory.size + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.tee $1 - i32.const 0 - i32.le_s if (result i32) - i32.const 1 + local.get $0 local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - i32.const 0 - end - if - unreachable - end - i32.const 34320 - i32.const 0 - i32.store - i32.const 35888 - i32.const 0 - i32.store - loop $for-loop|0 local.get $0 - i32.const 23 - i32.lt_u - if + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz + local.tee $1 i32.const 2 i32.shl - i32.const 34320 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34320 + i32.const 0 + i32.store + i32.const 35888 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 i32.lt_u if local.get $0 @@ -828,320 +804,162 @@ i32.const 34320 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1200 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34316 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34316 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34316 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1472 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + br $while-continue|0 end end ) @@ -1201,12 +1019,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1219,7 +1036,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -1315,304 +1134,486 @@ local.get $1 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 16 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i64.const 0 + i64.store align=1 + local.get $0 + i64.const 0 + i64.store offset=8 align=1 + local.get $0 + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34316 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/pinSpace + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/toSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1088 + i32.const 16 + memory.copy + local.get $0 + i32.store + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + i32.store + local.get $0 + if + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $2 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.const 16 + i32.store offset=8 + local.get $2 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $2 - i32.load - i32.const -3 - i32.and i32.store + local.get $2 + i32.const 1056 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i64.const 0 - i64.store align=1 - local.get $0 - i64.const 0 - i64.store offset=8 align=1 - local.get $0 + i32.const 34336 + i32.const 34384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/function/Function<%28~lib/array/Array%29=>i32> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/function/Function<%28~lib/array/Array%29=>i32> $invalid - end - return - end - return - end + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34316 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - i32.store + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/visitCount return end - unreachable - end - i32.const 34336 - i32.const 34384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34316 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/pinSpace - i32.const 1284 - i32.const 1280 - i32.store - i32.const 1288 - i32.const 1280 - i32.store - i32.const 1280 - global.set $~lib/rt/itcms/toSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1548 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/itcms/__new + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 1088 - i32.const 16 - memory.copy - local.get $0 - i32.store - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - i32.store - local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1200 - i32.const 295 - i32.const 14 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $0 - i32.const 20 - i32.sub - local.tee $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.const 34316 + i32.lt_u if - local.get $2 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 i32.and - local.tee $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34316 + i32.ge_u if - local.get $3 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $1 - i32.const 3 - i32.eq + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end if - local.get $3 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end + i32.const 10 + return end - local.get $2 - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $2 - i32.const 16 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=8 - local.get $2 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1056 - i32.load - call_indirect (type $0) - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34336 - i32.const 34384 - i32.const 1 + i32.const 0 + ) + (func $start:issues/2707~anonymous|0 (param $0 i32) (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable ) ) diff --git a/tests/compiler/issues/2825.release.wat b/tests/compiler/issues/2825.release.wat index c11fb2dae0..a03d3b82f6 100644 --- a/tests/compiler/issues/2825.release.wat +++ b/tests/compiler/issues/2825.release.wat @@ -8,12 +8,6 @@ (export "init" (func $issues/2825/init)) (export "memory" (memory $0)) (start $~start) - (func $issues/2825/init - loop $for-loop|0 - br $for-loop|0 - end - unreachable - ) (func $~start (local $0 i32) loop $for-loop|0 @@ -40,4 +34,10 @@ end end ) + (func $issues/2825/init + loop $for-loop|0 + br $for-loop|0 + end + unreachable + ) ) diff --git a/tests/compiler/issues/2873.release.wat b/tests/compiler/issues/2873.release.wat index 7cc4d874f8..82a92f5c23 100644 --- a/tests/compiler/issues/2873.release.wat +++ b/tests/compiler/issues/2873.release.wat @@ -1,20 +1,20 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32) (result i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i64 i64 i32 i64 i32) (result i32))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 f64 i32) (result i32))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) - (type $10 (func (result i32))) - (type $11 (func (param i32) (result i32))) - (type $12 (func (param i32 f32) (result i32))) - (type $13 (func (param i32 f64) (result i32))) - (type $14 (func (param f32) (result i32))) - (type $15 (func (param f64) (result i32))) + (type $4 (func (param i32 i32 i32 i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 f64 i32) (result i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 f64) (result i32))) + (type $9 (func (param i32 f32) (result i32))) + (type $10 (func (param f64) (result i32))) + (type $11 (func (param f32) (result i32))) + (type $12 (func (param i32 i32 i64))) + (type $13 (func (param i32 i32 i32) (result i32))) + (type $14 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $15 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -77,938 +77,547 @@ (data $26 (i32.const 3344) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\19\00\00\02\1a") (export "memory" (memory $0)) (start $~start) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $2 - local.get $1 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $3 + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 i32.sub - local.tee $10 - i64.extend_i32_s local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 - local.get $2 - i64.and - local.set $8 - local.get $2 - local.get $1 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 2656 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$138 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36140 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 2656 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$138 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 2656 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add + i32.and + i32.or + i32.store offset=4 end - else - local.get $3 - i32.const 10000000 - i32.lt_u + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + i32.const 1 else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u + local.get $0 + i32.const 3344 + i32.load + i32.gt_u + if + i32.const 2784 + i32.const 2848 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3348 i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 2592 + i32.const 2656 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$72 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$72 end + local.get $1 i32.const 0 - local.set $6 + i32.gt_s + br_if $do-loop|0 end - local.get $5 - local.get $6 - i32.or - if - local.get $0 - local.get $5 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 2592 + i32.const 2928 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $4 + i32.const 256 + i32.ge_u + if (result i32) + local.get $4 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $4 i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub i32.shl i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 i32.const 1 - i32.add - local.set $5 + i32.sub + else + local.get $4 end - local.get $7 - i32.const 1 - i32.sub - local.set $7 + else local.get $4 - local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add - local.tee $1 - i64.ge_u + end + i32.const 4 + local.get $3 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 2128 - i32.add - i64.load32_u - local.get $2 - i64.shl - local.set $2 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 - local.get $1 - i64.sub - local.get $2 - i64.ge_u - i32.and - if (result i32) - local.get $9 - local.get $1 - local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $2 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 - return + unreachable end - br $while-continue|0 end - end - loop $while-continue|4 + local.get $3 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $3 local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul + call $~lib/rt/tlsf/searchBlock local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + i32.eqz if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 + i32.const 0 + i32.const 2928 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 2128 + local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 2928 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $5 + local.get $4 + i32.const 4 i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $0 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 2928 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $5 - i32.const 1 + i32.const -4 + i32.and + local.get $4 i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 + local.tee $2 + i32.const 16 + i32.ge_u + if local.get $1 - local.get $8 - i64.gt_u local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u + local.get $5 + i32.const 2 i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 + i32.or + i32.store local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 2168 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2168 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl + i32.const 4 i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2168 + local.get $4 i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 + local.tee $4 local.get $2 - i32.const 2 + i32.const 4 i32.sub i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 2168 - i32.add - i32.load + i32.or i32.store + local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz - if - local.get $0 + local.get $5 + i32.const -2 + i32.and + i32.store local.get $1 - i32.const 1 - i32.shl + i32.const 4 i32.add - i32.const 3145774 - i32.store local.get $1 - i32.const 2 + i32.load + i32.const -4 + i32.and i32.add - return + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store end local.get $1 + i32.const 2 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $1 local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 local.get $1 local.get $3 - i32.le_s + i32.store offset=8 + local.get $3 + local.get $1 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + local.get $1 + f64.const 0 + f64.lt + local.tee $4 + if local.get $0 - local.get $3 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + local.set $1 + end + local.get $2 + if (result i64) + local.get $1 + f32.demote_f64 + i32.reinterpret_f32 + local.tee $8 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.tee $9 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add + local.get $9 + select + i32.const 150 + i32.sub + local.set $5 + local.get $8 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add else + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.set $5 local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 - i32.add - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - local.get $1 - f64.const 0 - f64.lt - local.tee $4 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - local.set $1 - end - local.get $2 - if (result i64) - local.get $1 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $8 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $9 - i32.const 1 - local.get $9 - select - i32.const 150 - i32.sub - local.set $5 - local.get $8 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - else - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.set $5 - local.get $3 - i64.const 4503599627370495 - i64.and - local.get $8 + i64.const 4503599627370495 + i64.and + local.get $8 i32.const 0 i32.ne i64.extend_i32_u @@ -1129,11 +738,11 @@ i64.const 4294967295 i64.and local.set $14 - local.get $12 local.get $3 i64.const 32 i64.shr_u local.tee $7 + local.get $12 i64.mul local.get $12 local.get $14 @@ -1160,17 +769,17 @@ i64.shr_u i64.add local.set $12 + local.get $7 local.get $11 i64.const 32 i64.shr_u - local.tee $11 - local.get $7 + local.tee $7 i64.mul local.get $15 i64.const 32 i64.shr_u i64.add - local.get $11 + local.get $7 local.get $14 i64.mul local.get $15 @@ -1184,7 +793,7 @@ i64.add i64.const 1 i64.sub - local.set $7 + local.set $11 local.get $0 local.get $4 i32.const 1 @@ -1192,14 +801,14 @@ i32.add local.get $0 local.get $6 - local.get $11 + local.get $7 i64.mul local.get $13 i64.const 32 i64.shr_u i64.add + local.get $7 local.get $10 - local.get $11 i64.mul local.get $13 i64.const 4294967295 @@ -1210,14 +819,14 @@ i64.const 32 i64.shr_u i64.add - local.get $7 + local.get $11 global.get $~lib/util/number/_exp_pow global.get $~lib/util/number/_exp i32.add i32.const -64 i32.sub - local.get $7 local.get $11 + local.get $7 local.get $16 i64.mul local.get $12 @@ -1225,7 +834,7 @@ i64.shr_u i64.add local.get $3 - local.get $11 + local.get $7 i64.mul local.get $12 i64.const 4294967295 @@ -1248,206 +857,167 @@ local.get $4 i32.add ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 3104 - call $~lib/rt/itcms/__visit - i32.const 3312 - call $~lib/rt/itcms/__visit - i32.const 2784 - call $~lib/rt/itcms/__visit - i32.const 2592 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 2656 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s if - return + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 2656 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$138 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 36140 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 2656 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$138 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 2656 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 3344 - i32.load - i32.gt_u - if - i32.const 2784 - i32.const 2848 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 3348 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + i32.store local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$82 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$82 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - global.set $~lib/rt/itcms/visitCount + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -1762,538 +1332,623 @@ i32.sub local.set $5 local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 2928 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 2928 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 2928 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 2928 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 16 i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 2928 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $3 i32.store offset=8 - local.get $1 - i32.const 4 - i32.add local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 i32.add - local.tee $3 i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - local.get $3 - i32.store offset=1568 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 36144 - i32.const 0 - i32.store - i32.const 37712 - i32.const 0 - i32.store - loop $for-loop|0 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end local.get $0 - i32.const 23 - i32.lt_u + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u i32.const 2 i32.shl - i32.const 36144 + i32.const 2168 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36144 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2168 i32.add - local.set $0 - br $for-loop|0 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - i32.const 36144 - i32.const 37716 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36144 - global.set $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2168 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 2168 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 + block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) + local.get $1 + f64.const 0 + f64.eq + if + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + local.get $1 + local.get $1 + f64.ne + if local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 if local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end + i32.const 45 + i32.store16 local.get $0 - i32.load offset=4 - i32.const -4 - i32.and + i32.const 2 + i32.add local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36140 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white + i64.const 29555310648492105 + i64.store local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.1 end - global.get $~lib/rt/itcms/visitCount - return + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $0 + local.get $1 + i32.const 0 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) + (local $2 f64) + (local $3 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $1 + f64.promote_f32 + local.tee $2 + f64.const 0 + f64.eq if local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 2656 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 36140 - i32.lt_u + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $2 + local.get $2 + f64.sub + f64.const 0 + f64.ne + if + local.get $2 + local.get $2 + f64.ne if local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total + i32.const 78 + i32.store16 local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total + i32.const 97 + i32.store16 offset=2 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36140 - i32.ge_u + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $2 + f64.const 0 + f64.lt + local.tee $3 if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 + i32.const 45 + i32.store16 local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 2928 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.const 2 + i32.add + local.set $0 end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 end - i32.const 10 - return + unreachable end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + local.get $0 + local.get $2 + i32.const 1 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + local.set $1 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + i32.const 1088 + local.set $1 + local.get $0 + local.get $0 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 1120 + i32.const 1168 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $~lib/util/number/dtoa_impl|inlined.1 + end + global.get $~lib/memory/__stack_pointer + i32.const 1200 + local.get $0 i32.const 0 - global.set $~lib/rt/itcms/state + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 1200 + local.get $2 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + local.set $2 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + i32.const 1088 + local.set $2 + local.get $1 + local.get $1 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 1120 + i32.const 1168 + local.get $1 + f64.const 0 + f64.lt + select + local.set $2 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + i32.const 1200 + local.get $1 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 1200 + local.get $3 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3372 + i32.lt_s + if + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3152 + return + end + local.get $3 + i32.eqz + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2420,469 +2075,250 @@ i32.load offset=96 else i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 2592 - i32.const 2656 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$72 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$72 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 2592 - i32.const 2928 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - local.get $4 - i32.const 256 - i32.ge_u - if (result i32) - local.get $4 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $4 - i32.const 1 - i32.const 27 - local.get $4 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $4 - end - else - local.get $4 - end - i32.const 4 - local.get $3 - i32.load offset=1568 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.const 16 - i32.shl - i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $1 - local.get $2 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36144 + i32.const 0 + i32.store + i32.const 37712 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $2 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 36144 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $3 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $3 - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 2928 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36144 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end - local.get $4 + i32.const 36144 + i32.const 37716 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36144 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.load - i32.const -4 - i32.and - i32.gt_u + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 2928 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $5 - local.get $4 - i32.const 4 + i32.const 19 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 2928 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 + i32.const -16 i32.and - local.get $4 + i32.const 4 i32.sub - local.tee $2 - i32.const 16 - i32.ge_u + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $1 - local.get $4 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 + local.get $3 i32.const 4 i32.add - local.get $4 - i32.add - local.tee $4 - local.get $2 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $3 - local.get $4 - call $~lib/rt/tlsf/insertBlock - else local.get $1 - local.get $5 - i32.const -2 - i32.and - i32.store + i32.gt_u + if + i32.const 0 + i32.const 2928 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 local.get $1 - i32.const 4 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.gt_u + if + i32.const 0 + i32.const 2928 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 2 - i32.store offset=12 - local.get $1 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $3 - local.get $1 local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $2 local.get $1 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total local.get $1 - i32.load - i32.const -4 - i32.and i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) - (local $2 f64) - (local $3 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 3104 + call $~lib/rt/itcms/__visit + i32.const 3312 + call $~lib/rt/itcms/__visit + i32.const 2784 + call $~lib/rt/itcms/__visit + i32.const 2592 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - f64.promote_f32 - local.tee $2 - f64.const 0 - f64.eq + i32.ne if local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 + i32.load offset=4 i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - local.get $2 - local.get $2 - f64.sub - f64.const 0 - f64.ne - if - local.get $2 - local.get $2 - f64.ne + i32.and + i32.const 3 + i32.ne if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else - local.get $2 - f64.const 0 - f64.lt - local.tee $3 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $3 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + i32.const 0 + i32.const 2656 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - unreachable - end - local.get $0 - local.get $2 - i32.const 1 - call $~lib/util/number/dtoa_core - end - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) - local.get $1 - f64.const 0 - f64.eq - if local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 + i32.const 20 + i32.add + call $~lib/rt/__visit_members local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - unreachable + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/util/number/dtoa_core end ) (func $~lib/array/Array~visit (param $0 i32) @@ -2906,49 +2342,14 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - unreachable + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start (local $0 i32) @@ -3326,526 +2727,1124 @@ local.get $4 i32.lt_s if - local.get $1 + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $5 + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.const 3184 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $0 + local.get $5 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|01 + end + end + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $0 + i32.add + local.tee $0 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinFloatArray$144 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3024 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36160 + i32.const 36208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 0 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $3 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if local.get $0 - i32.const 1 - i32.shl + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 i32.add + local.tee $2 local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut local.get $2 - i32.const 3 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 i32.shl + local.tee $2 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 i32.add - f64.load - call $~lib/util/number/dtoa_buffered + local.tee $0 + i32.const 101 + i32.store16 offset=2 local.get $0 + i32.const 4 i32.add - local.set $0 - local.get $5 + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.const 3184 - local.get $5 - i32.const 1 - i32.shl - memory.copy + i32.const 0 local.get $0 - local.get $5 - i32.add + i32.sub local.set $0 end - local.get $2 + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end i32.const 1 i32.add - local.set $2 - br $for-loop|01 + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 end - end - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $0 - i32.add - local.tee $0 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinFloatArray$144 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 3216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 3024 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 2 + i32.add + end + end + end ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) + local.get $2 + local.get $1 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + local.tee $11 + local.get $2 + i64.and + local.set $8 + local.get $2 local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u + i32.const 10000000 + i32.lt_u if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 i32.or - else + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 i32.const 1 - end - i32.eqz - if - loop $do-loop|0 + i32.sub + local.set $7 + local.get $4 + local.get $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $2 + i64.shl + local.get $8 + i64.add + local.tee $1 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 2128 + i32.add + i64.load32_u local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$82 - loop $while-continue|1 + i64.shl + local.set $2 local.get $0 - local.tee $3 + local.get $5 i32.const 1 i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|3 local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 + local.get $9 + i64.lt_u local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$82 - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + i64.sub + local.get $2 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $1 + local.get $2 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $1 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $2 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + return end - i32.const 0 - local.set $3 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - i32.const 1 + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $8 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $7 + local.get $1 + local.get $11 + i64.and + local.tee $8 + local.get $4 + i64.ge_u + br_if $while-continue|4 end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 20 + local.get $7 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.le_s - select - i32.const 1 + i32.const 2 i32.shl - local.set $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.ge_s - select + i32.const 2128 + i32.add + i64.load32_u + i64.mul + local.set $1 + local.get $0 + local.get $5 i32.const 1 - i32.shl - local.tee $4 - local.get $3 i32.sub - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3152 - return - end - local.get $3 - i32.eqz - local.get $4 - local.get $1 i32.const 1 i32.shl - i32.eq - i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $3 - i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/dtoa (param $0 f32) (result i32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1056 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $1 + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|6 local.get $1 - f64.sub - f64.const 0 - f64.ne - if - i32.const 1088 - local.set $2 + local.get $8 + i64.gt_u + local.get $4 + local.get $8 + i64.sub + local.get $12 + i64.ge_u + i32.and + if (result i32) local.get $1 + local.get $8 + local.get $12 + i64.add + local.tee $2 + i64.gt_u local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 1120 - i32.const 1168 + local.get $8 + i64.sub + local.get $2 local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.0 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $12 + i64.add + local.set $8 + br $while-continue|6 + end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36140 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return end - i32.const 1200 - local.get $1 - i32.const 1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 1200 - local.get $3 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3372 - i32.lt_s - if - i32.const 36160 - i32.const 36208 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1056 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.1 - local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 1088 - local.set $1 - local.get $0 local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 1120 - i32.const 1168 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 2656 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.1 + i32.const 36140 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36140 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 2928 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - i32.const 1200 - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 1200 - local.get $2 - memory.copy + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 ) ) diff --git a/tests/compiler/logical.release.wat b/tests/compiler/logical.release.wat index 5147bdfca1..7d72c4c009 100644 --- a/tests/compiler/logical.release.wat +++ b/tests/compiler/logical.release.wat @@ -44,63 +44,6 @@ (export "qux" (global $logical/qux)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $logical/b - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $logical/c - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -253,105 +196,335 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1440 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + local.get $1 + i32.load + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1440 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load offset=8 - local.set $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load offset=4 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub local.tee $4 + i32.const 16 + i32.ge_u if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 i32.const 4 i32.shl local.get $3 @@ -645,119 +818,99 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $logical/C + block $logical/A + block $logical/B + block $logical/Obj + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -839,589 +992,292 @@ i32.const 34304 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34292 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $logical/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $logical/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1168 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34292 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34292 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s if - call $~lib/rt/tlsf/initialize + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 i32.eqz if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $logical/Obj#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s if - i32.const 0 - i32.const 1440 - i32.const 501 - i32.const 14 + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $logical/A#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub + i32.const 34320 + i32.const 34368 i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add + call $~lib/object/Object#constructor local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $logical/C - block $logical/A - block $logical/B - block $logical/Obj - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $logical/B $logical/A $logical/C $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) (func $~start (local $0 i32) block $__inlined_func$start:logical$1 @@ -1567,161 +1423,306 @@ local.get $0 global.get $logical/c local.get $0 - select + select + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 114 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $logical/b + local.tee $0 + i32.store + global.get $logical/c + global.get $logical/c + local.get $0 + local.get $0 + select + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$start:logical$1 + end + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34292 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and i32.ne if i32.const 0 - i32.const 1056 - i32.const 114 - i32.const 1 + i32.const 1168 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $logical/b - local.tee $0 - i32.store - global.get $logical/c - global.get $logical/c local.get $0 - local.get $0 - select - i32.ne + i32.const 34292 + i32.lt_u if + local.get $0 i32.const 0 - i32.const 1056 - i32.const 120 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34292 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:logical$1 + i32.const 10 + return end - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $logical/Obj#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - if - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $logical/A#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - if - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - if - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/loop-flow.release.wat b/tests/compiler/loop-flow.release.wat index f6a91f814e..808ecef87a 100644 --- a/tests/compiler/loop-flow.release.wat +++ b/tests/compiler/loop-flow.release.wat @@ -22,17 +22,12 @@ (export "doAny" (func $loop-flow/doAny)) (export "memory" (memory $0)) (start $~start) - (func $loop-flow/whileReturn (result i32) - i32.const 1 - ) (func $loop-flow/whileAny (param $0 i32) (result i32) loop $while-continue|0 (result i32) local.get $0 i32.const 1 - i32.eq - if (result i32) - i32.const 1 - else + i32.ne + if local.get $0 i32.const 2 i32.eq @@ -48,16 +43,17 @@ end unreachable end + i32.const 1 end + drop + i32.const 1 ) (func $loop-flow/forAny (param $0 i32) (result i32) loop $for-loop|0 (result i32) local.get $0 i32.const 1 - i32.eq - if (result i32) - i32.const 1 - else + i32.ne + if local.get $0 i32.const 2 i32.eq @@ -71,16 +67,17 @@ end br $for-loop|0 end + i32.const 1 end + drop + i32.const 1 ) (func $loop-flow/doAny (param $0 i32) (result i32) loop $do-loop|0 (result i32) local.get $0 i32.const 1 - i32.eq - if (result i32) - i32.const 1 - else + i32.ne + if local.get $0 i32.const 2 i32.eq @@ -94,7 +91,21 @@ end br $do-loop|0 end + i32.const 1 end + drop + i32.const 1 + ) + (func $~start + i32.const 1 + call $loop-flow/whileAny + drop + i32.const 1 + call $loop-flow/forAny + drop + i32.const 1 + call $loop-flow/doAny + drop ) (func $loop-flow/whileThrow (result i32) i32.const 1104 @@ -104,6 +115,9 @@ call $~lib/builtins/abort unreachable ) + (func $loop-flow/whileReturn (result i32) + i32.const 1 + ) (func $loop-flow/whileContinue (result i32) loop $while-continue|0 br $while-continue|0 @@ -126,15 +140,4 @@ call $~lib/builtins/abort unreachable ) - (func $~start - i32.const 1 - call $loop-flow/whileAny - drop - i32.const 1 - call $loop-flow/forAny - drop - i32.const 1 - call $loop-flow/doAny - drop - ) ) diff --git a/tests/compiler/loop-wrap.release.wat b/tests/compiler/loop-wrap.release.wat index aeb624f5ba..ccb4934d40 100644 --- a/tests/compiler/loop-wrap.release.wat +++ b/tests/compiler/loop-wrap.release.wat @@ -6,10 +6,11 @@ (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) (export "memory" (memory $0)) - (func $loop-wrap/testAlwaysWrapped - (local $0 i32) + (func $loop-wrap/testSubsequentWrapped (param $0 i32) loop $do-loop|0 local.get $0 + i32.const 255 + i32.and i32.const 10 i32.ne if @@ -42,11 +43,10 @@ end end ) - (func $loop-wrap/testSubsequentWrapped (param $0 i32) + (func $loop-wrap/testAlwaysWrapped + (local $0 i32) loop $do-loop|0 local.get $0 - i32.const 255 - i32.and i32.const 10 i32.ne if diff --git a/tests/compiler/managed-cast.release.wat b/tests/compiler/managed-cast.release.wat index 62f92354e5..99e4fafa6f 100644 --- a/tests/compiler/managed-cast.release.wat +++ b/tests/compiler/managed-cast.release.wat @@ -1,8 +1,8 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (result i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -38,125 +38,435 @@ (data $11 (i32.const 1696) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $managed-cast/Cat#constructor (result i32) (local $0 i32) (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.ne + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + i32.const 34512 + i32.const 34560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/itcms/__visit (param $0 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$137 - local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34492 - i32.lt_u - i32.and - i32.eqz + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$137 end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34492 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34492 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34492 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$137 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34492 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$137 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort unreachable end local.get $0 @@ -627,459 +937,266 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $3 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add + local.get $2 local.get $1 - i32.gt_u + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.load + i32.const -4 + i32.and + i32.const 28 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $2 local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add + i32.load local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u if - unreachable - end - i32.const 34496 - i32.const 0 - i32.store - i32.const 36064 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34496 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34496 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34496 - i32.const 36068 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34496 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34492 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34492 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34492 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $managed-cast/Animal + block $managed-cast/Cat + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid + end + return + end + return end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - i32.const 10 return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) @@ -1138,265 +1255,277 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock + memory.size local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.const 16 - i32.shl - i32.const 4 i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select memory.grow i32.const 0 i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34496 + i32.const 0 + i32.store + i32.const 36064 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - local.get $3 - memory.grow + local.get $0 + i32.const 2 + i32.shl + i32.const 34496 + i32.add i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if + i32.store offset=4 i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34496 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end + i32.const 34496 + i32.const 36068 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34496 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1392 - i32.const 501 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load - local.tee $3 - i32.const -4 + i32.const 19 + i32.add + i32.const -16 i32.and - i32.const 28 + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $1 local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else + i32.add local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const -2 - i32.and - i32.store local.get $1 - i32.const 4 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $0 local.get $1 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total local.get $1 - i32.load - i32.const -4 - i32.and i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $managed-cast/Animal - block $managed-cast/Cat - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - return end - unreachable + ) + (func $managed-cast/testUpcastToNullable (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1724 + i32.lt_s + if + i32.const 34512 + i32.const 34560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start (local $0 i32) @@ -1534,22 +1663,15 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~instanceof|managed-cast/Cat$85 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$85 - drop - i32.const 1 - end - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne if i32.const 1648 i32.const 1584 @@ -1584,35 +1706,28 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $__inlined_func$~instanceof|managed-cast/Cat$88 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.eqz - if - i32.const 1456 - i32.const 1584 - i32.const 36 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.store offset=8 - i32.const 0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$88 - drop - i32.const 1 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.eqz + if + i32.const 1456 + i32.const 1584 + i32.const 36 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne if i32.const 1648 i32.const 1584 @@ -1648,22 +1763,15 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - block $__inlined_func$~instanceof|managed-cast/Cat$91 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.ne - br_if $__inlined_func$~instanceof|managed-cast/Cat$91 - drop - i32.const 1 - end - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.ne if i32.const 1648 i32.const 1584 @@ -1787,132 +1895,4 @@ call $~lib/builtins/abort unreachable ) - (func $managed-cast/Cat#constructor (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1724 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1724 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1724 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34512 - i32.const 34560 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $managed-cast/testUpcastToNullable (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1724 - i32.lt_s - if - i32.const 34512 - i32.const 34560 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/many-locals.release.wat b/tests/compiler/many-locals.release.wat index d6e24e0568..fc05e1dc8d 100644 --- a/tests/compiler/many-locals.release.wat +++ b/tests/compiler/many-locals.release.wat @@ -6,11 +6,11 @@ (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) (export "memory" (memory $0)) - (func $many-locals/testI32 (param $0 i32) (result i32) - local.get $0 - ) (func $many-locals/testI8 (param $0 i32) (result i32) local.get $0 i32.extend8_s ) + (func $many-locals/testI32 (param $0 i32) (result i32) + local.get $0 + ) ) diff --git a/tests/compiler/memcpy.release.wat b/tests/compiler/memcpy.release.wat index b82c318426..1a27a0f799 100644 --- a/tests/compiler/memcpy.release.wat +++ b/tests/compiler/memcpy.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32) (result i32))) (type $2 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memcpy/dest (mut i32) (i32.const 0)) diff --git a/tests/compiler/memmove.release.wat b/tests/compiler/memmove.release.wat index 9c569cc378..ae5857e2d3 100644 --- a/tests/compiler/memmove.release.wat +++ b/tests/compiler/memmove.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32) (result i32))) (type $2 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memmove/dest (mut i32) (i32.const 0)) diff --git a/tests/compiler/memory.release.wat b/tests/compiler/memory.release.wat index b1afa82e8f..aafefd95ad 100644 --- a/tests/compiler/memory.release.wat +++ b/tests/compiler/memory.release.wat @@ -16,6 +16,9 @@ (data $24 (i32.const 1216) "\01") (export "memory" (memory $0)) (start $~start) + (func $~start + call $start:memory + ) (func $start:memory (local $0 i32) i32.const 1024 @@ -257,7 +260,4 @@ i32.const 1215 global.set $memory/ptr ) - (func $~start - call $start:memory - ) ) diff --git a/tests/compiler/memset.release.wat b/tests/compiler/memset.release.wat index 422cb7f274..4a0b59732f 100644 --- a/tests/compiler/memset.release.wat +++ b/tests/compiler/memset.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32 i32 i32))) - (type $1 (func (param i32 i32 i32 i32))) + (type $0 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32))) (type $2 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memset/dest (mut i32) (i32.const 0)) @@ -206,7 +206,7 @@ i32.const 1 i32.const 16 call $memset/memset - global.get $memset/dest + i32.const 33852 i32.load8_u i32.const 1 i32.ne diff --git a/tests/compiler/new.release.wat b/tests/compiler/new.release.wat index af7e02c097..b952e13bf6 100644 --- a/tests/compiler/new.release.wat +++ b/tests/compiler/new.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (result i32))) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func (result i32))) (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) @@ -38,87 +38,6 @@ (data $8 (i32.const 1440) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $new/ref - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/gen - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/ref2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/genext - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/genext2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $new/genext3 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -271,92 +190,364 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + local.get $1 + i32.load + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load offset=8 - local.set $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load offset=4 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub local.tee $4 - if + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $new/Gen#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if local.get $4 local.get $5 i32.store offset=8 @@ -663,157 +854,288 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $new/GenExt + block $new/ns.Ref + block $new/Gen + block $new/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return end + return end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + unreachable + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s if - return + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $new/ns.Ref#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $new/Ref#constructor (result i32) (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $new/GenExt#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34256 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 35824 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $new/Gen#constructor + local.tee $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34256 - i32.add - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34256 + i32.const 0 + i32.store + i32.const 35824 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34256 + i32.add + i32.const 0 i32.store offset=4 i32.const 0 local.set $1 @@ -857,879 +1179,558 @@ i32.const 34256 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34244 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $new/ref + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/gen + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/ref2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/genext3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34244 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34244 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34244 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $new/Ref#constructor + global.set $new/ref + call $new/Ref#constructor + global.set $new/ref + call $new/Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/ref + i32.const 0 + call $new/Gen#constructor + global.set $new/gen + i32.const 0 + call $new/Gen#constructor + global.set $new/gen i32.const 0 + call $new/Gen#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/gen + call $new/ns.Ref#constructor + global.set $new/ref2 + call $new/ns.Ref#constructor + global.set $new/ref2 + call $new/ns.Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/ref2 + call $new/GenExt#constructor + global.set $new/genext + call $new/GenExt#constructor + global.set $new/genext2 + call $new/GenExt#constructor + global.set $new/genext3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 + global.get $~lib/rt/itcms/white + i32.eqz local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow i32.const 0 - i32.lt_s + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - unreachable + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34244 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34244 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34244 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $new/GenExt - block $new/ns.Ref - block $new/Gen - block $new/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $new/Ref $new/Gen $new/ns.Ref $new/GenExt $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34244 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $new/Ref#constructor - global.set $new/ref - call $new/Ref#constructor - global.set $new/ref - call $new/Ref#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.set $new/ref - i32.const 0 - call $new/Gen#constructor - global.set $new/gen - i32.const 0 - call $new/Gen#constructor - global.set $new/gen - i32.const 0 - call $new/Gen#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.set $new/gen - call $new/ns.Ref#constructor - global.set $new/ref2 - call $new/ns.Ref#constructor - global.set $new/ref2 - call $new/ns.Ref#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.set $new/ref2 - call $new/GenExt#constructor - global.set $new/genext - call $new/GenExt#constructor - global.set $new/genext2 - call $new/GenExt#constructor - global.set $new/genext3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $new/Ref#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $new/Gen#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $new/ns.Ref#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $new/GenExt#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $new/Gen#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1476 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) ) diff --git a/tests/compiler/number.release.wat b/tests/compiler/number.release.wat index 5fbdeb3b8b..71d88ecec9 100644 --- a/tests/compiler/number.release.wat +++ b/tests/compiler/number.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func)) (type $1 (func (param i32 i32) (result i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 i32))) - (type $9 (func (param i64 i64 i32 i64) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i64 i64 i32 i64) (result i32))) + (type $9 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $number/a (mut i32) (i32.const 1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -79,1052 +79,959 @@ (data $31 (i32.const 4656) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 2080 - call $~lib/rt/itcms/__visit - i32.const 3136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4676 + i32.lt_s if - return + i32.const 37472 + i32.const 37520 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$165 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 37444 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$165 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 4656 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1536 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 4660 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + i32.store local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) local.get $3 + local.tee $0 i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$81 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$81 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4676 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 203 - i32.const 14 + i32.const 37472 + i32.const 37520 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$73 end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $1 + select + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.add + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 local.get $1 - local.get $6 - i32.const 4 i32.add local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1616 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 local.get $2 - local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.add + global.set $~lib/memory/__stack_pointer end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and + local.get $0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end + global.get $~lib/rt/itcms/white local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $3 local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter end - local.get $3 + block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 37444 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$165 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 4656 i32.load - local.set $4 - local.get $5 - local.set $1 + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 4660 + i32.add + i32.load + i32.const 32 + i32.and end - else + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 local.get $0 - i32.const 1572 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 local.get $1 - i32.gt_u + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 1616 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + i32.const 100 + i32.ge_u if - return + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end local.get $1 - local.get $4 - i32.const 2 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 8 - i32.sub + i32.const -4 + i32.and local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 37456 - i32.const 0 - i32.store - i32.const 39024 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 37456 i32.add - i32.const 0 + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 37456 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 37456 - i32.const 39028 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 37456 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 37444 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 37444 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 37444 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 + i32.const 8 + i32.sub i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + return end + return end - i32.const 10 return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1254,6 +1161,249 @@ end end ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37456 + i32.const 0 + i32.store + i32.const 39024 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37456 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37456 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37456 + i32.const 39028 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37456 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2080 + call $~lib/rt/itcms/__visit + i32.const 3136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -1352,8 +1502,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $4 i32.const 256 i32.ge_u @@ -1381,7 +1529,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1395,7 +1544,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s @@ -1567,228 +1718,329 @@ memory.fill local.get $1 ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~start + call $start:number + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end local.get $1 - i32.const 100 - i32.ge_u + i32.eqz if local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 i32.const 1 i32.shl + i32.const 3456 i32.add - local.get $1 - i32.const 100 - i32.rem_u + i32.const 3145774 + i32.store + local.get $0 i32.const 2 - i32.shl - i32.const 1660 i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 + return end + local.get $0 local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 + i32.add + local.tee $2 + i32.const 21 + i32.le_s + local.get $0 + local.get $2 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + i32.const 48 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end local.get $2 - i32.const 2 - i32.sub i32.const 1 i32.shl + i32.const 3456 i32.add - local.get $1 + i32.const 3145774 + i32.store + local.get $2 i32.const 2 - i32.shl - i32.const 1660 i32.add - i32.load - i32.store else - local.get $0 local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4676 - i32.lt_s - if - i32.const 37472 - i32.const 37520 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32$73 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32$73 - end - global.get $~lib/memory/__stack_pointer + i32.const 21 + i32.le_s + local.get $2 i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $1 - select - local.tee $3 - i32.const 100000 - i32.lt_u + i32.gt_s + i32.and if (result i32) - local.get $3 - i32.const 100 - i32.lt_u + local.get $2 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + local.tee $2 + i32.const 2 + i32.add + local.get $2 + i32.const 0 + local.get $1 + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $2 + i32.const 46 + i32.store16 + local.get $0 + i32.const 1 + i32.add + else + local.get $2 + i32.const 0 + i32.le_s + local.get $2 + i32.const -6 + i32.gt_s + i32.and if (result i32) - local.get $3 - i32.const 10 - i32.ge_u + i32.const 2 + local.get $2 + i32.sub + local.tee $2 i32.const 1 + i32.shl + i32.const 3456 i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 + i32.const 3456 + local.get $0 + i32.const 1 + i32.shl + memory.copy + i32.const 3456 + i32.const 3014704 + i32.store + i32.const 2 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + i32.const 3456 + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.get $2 i32.add else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u + local.get $0 + i32.const 1 + i32.eq + if + i32.const 3458 + i32.const 101 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $1 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + i32.const 3460 + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + i32.const 3460 + i32.const 45 + i32.const 43 + local.get $1 + select + i32.store16 + else + i32.const 3460 + i32.const 3458 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + i32.sub + memory.copy + i32.const 3458 + i32.const 46 + i32.store16 + local.get $1 + i32.const 3456 + i32.add + local.tee $1 + i32.const 101 + i32.store16 offset=2 + local.get $1 + i32.const 4 + i32.add + local.tee $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $0 + end + local.get $0 + i32.const 2 i32.add end end - local.tee $2 - i32.const 1 - i32.shl - local.get $1 - i32.add - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $1 - i32.add - local.get $3 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer end - local.get $0 ) (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) (local $4 i32) @@ -1868,9 +2120,9 @@ i32.add end end - local.set $6 + local.set $2 loop $while-continue|0 - local.get $6 + local.get $2 i32.const 0 i32.gt_s if @@ -1886,7 +2138,7 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $6 + local.get $2 i32.const 1 i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 @@ -1894,7 +2146,7 @@ local.get $5 i32.const 1000000000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 1000000000 i32.rem_u @@ -1904,7 +2156,7 @@ local.get $5 i32.const 100000000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 100000000 i32.rem_u @@ -1914,7 +2166,7 @@ local.get $5 i32.const 10000000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 10000000 i32.rem_u @@ -1924,7 +2176,7 @@ local.get $5 i32.const 1000000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 1000000 i32.rem_u @@ -1934,7 +2186,7 @@ local.get $5 i32.const 100000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 100000 i32.rem_u @@ -1944,7 +2196,7 @@ local.get $5 i32.const 10000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 10000 i32.rem_u @@ -1954,7 +2206,7 @@ local.get $5 i32.const 1000 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 1000 i32.rem_u @@ -1964,7 +2216,7 @@ local.get $5 i32.const 100 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 100 i32.rem_u @@ -1974,7 +2226,7 @@ local.get $5 i32.const 10 i32.div_u - local.set $2 + local.set $6 local.get $5 i32.const 10 i32.rem_u @@ -1982,16 +2234,16 @@ br $break|1 end local.get $5 - local.set $2 + local.set $6 i32.const 0 local.set $5 br $break|1 end i32.const 0 - local.set $2 + local.set $6 end - local.get $2 local.get $4 + local.get $6 i32.or if local.get $4 @@ -1999,7 +2251,7 @@ i32.shl i32.const 3456 i32.add - local.get $2 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -2010,10 +2262,10 @@ i32.add local.set $4 end - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 local.get $3 local.get $5 i64.extend_i32_u @@ -2027,10 +2279,10 @@ i64.ge_u if global.get $~lib/util/number/_K - local.get $6 + local.get $2 i32.add global.set $~lib/util/number/_K - local.get $6 + local.get $2 i32.const 2 i32.shl i32.const 4384 @@ -2116,6 +2368,11 @@ i64.ne if local.get $4 + local.tee $5 + i32.const 1 + i32.add + local.set $4 + local.get $5 i32.const 1 i32.shl i32.const 3456 @@ -2127,15 +2384,11 @@ i32.const 48 i32.add i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 end - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 local.get $0 local.get $11 i64.and @@ -2145,12 +2398,12 @@ br_if $while-continue|4 end global.get $~lib/util/number/_K - local.get $6 + local.get $2 i32.add global.set $~lib/util/number/_K local.get $8 i32.const 0 - local.get $6 + local.get $2 i32.sub i32.const 2 i32.shl @@ -2212,525 +2465,273 @@ i32.store16 local.get $4 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return - end - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s - local.get $0 - local.get $2 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 48 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 3145774 - i32.store - local.get $2 - i32.const 2 - i32.add - else - local.get $2 - i32.const 21 - i32.le_s - local.get $2 - i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $2 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - local.tee $2 - i32.const 2 - i32.add - local.get $2 - i32.const 0 - local.get $1 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $2 - i32.const 46 - i32.store16 - local.get $0 - i32.const 1 - i32.add - else - local.get $2 - i32.const 0 - i32.le_s - local.get $2 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - i32.const 2 - local.get $2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 3456 - local.get $0 - i32.const 1 - i32.shl - memory.copy - i32.const 3456 - i32.const 3014704 - i32.store - i32.const 2 - local.set $1 - loop $for-loop|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - i32.const 3456 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - local.get $0 - local.get $2 - i32.add - else - local.get $0 i32.const 1 - i32.eq - if - i32.const 3458 - i32.const 101 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 3460 - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - i32.const 3460 - i32.const 45 - i32.const 43 - local.get $1 - select - i32.store16 - else - i32.const 3460 - i32.const 3458 - local.get $0 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - i32.sub - memory.copy - i32.const 3458 - i32.const 46 - i32.store16 - local.get $1 - i32.const 3456 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s + local.get $0 + i32.load offset=4 local.tee $2 + i32.const 3 + i32.and + i32.ne if - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else + local.get $0 + local.get $2 + i32.const -4 + i32.and local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 local.get $0 - local.get $1 - i32.add + i32.load offset=4 + i32.const -4 + i32.and local.set $0 + br $while-continue|1 end - local.get $0 - i32.const 2 - i32.add end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37444 + i32.lt_u + if local.get $0 - i32.const 8 - i32.sub i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end - return end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - call $start:number - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4676 - i32.lt_s - if - i32.const 37472 - i32.const 37520 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$81 - loop $while-continue|1 + local.get $0 + i32.const 37444 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37444 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:number (local $0 i32) (local $1 i64) - (local $2 f64) + (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2813,41 +2814,49 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $2 i64.const 4294967295 i64.and - local.tee $4 + local.tee $3 i64.const 31 i64.shl - local.get $4 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add local.set $1 - local.get $3 + local.get $2 i64.const 32 i64.shr_u - local.tee $3 + local.tee $2 i64.const 31 i64.shl - local.get $4 + local.get $3 i64.const 31 i64.shl - local.tee $5 + local.get $3 + i64.const 10 + i64.shl i64.const 32 i64.shr_u i64.add - local.get $5 + local.tee $4 + i64.const 32 + i64.shr_u + i64.add + local.get $4 i64.const 4294967295 i64.and + local.get $2 + i64.const 10 + i64.shl + i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - local.get $3 + i64.const 1 + i64.sub + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 i64.const 31 i64.shl local.get $1 @@ -2857,29 +2866,23 @@ local.get $1 i64.const 4294967295 i64.and - local.get $3 - i64.const 10 - i64.shl - i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.tee $1 + local.get $4 global.get $~lib/util/number/_exp_pow i32.const 2 i32.add - local.get $1 - local.get $3 + local.get $4 + local.get $2 i64.const 2147483647 i64.mul - local.get $4 + local.get $3 i64.const 2147483647 i64.mul - local.get $4 + local.get $3 i64.const 4294966784 i64.mul i64.const 32 @@ -2889,7 +2892,7 @@ i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $2 i64.const 4294966784 i64.mul local.get $1 @@ -2909,15 +2912,13 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 + local.tee $5 call $~lib/rt/itcms/__new local.tee $0 i32.store local.get $0 i32.const 3456 - local.get $6 + local.get $5 memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/object-literal.release.wat b/tests/compiler/object-literal.release.wat index e1bb4a66e6..872f7b5c5f 100644 --- a/tests/compiler/object-literal.release.wat +++ b/tests/compiler/object-literal.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func (param i32))) - (type $1 (func)) - (type $2 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -48,137 +48,29 @@ (data $15.1 (i32.const 1736) " ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.eqz if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$205 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34516 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$205 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1712 - i32.load - i32.gt_u - if - i32.const 1200 - i32.const 1264 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1716 - i32.add - i32.load - i32.const 32 - i32.and + return end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 local.get $0 - local.get $1 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 i32.const 3 i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) local.get $1 @@ -234,710 +126,278 @@ end end ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1200 - call $~lib/rt/itcms/__visit - i32.const 1312 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1104 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - i32.const 0 - i32.const 1440 - i32.const 268 - i32.const 14 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 1440 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + i32.ge_u + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$83 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$83 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1440 - i32.const 201 - i32.const 14 + i32.const 1312 + i32.const 1104 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1440 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 i32.add - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 - i32.store + i32.store offset=12 local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 + local.get $3 i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl + i32.const 3 + i32.and i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add local.tee $1 i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34528 - i32.const 0 - i32.store - i32.const 36096 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34528 - i32.const 36100 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34528 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 34516 - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.const 1 local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $1 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1155,51 +615,105 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1210,1055 +724,1148 @@ if i32.const 0 i32.const 1440 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 1073741820 - i32.gt_u + i32.eqz if - i32.const 1312 + i32.const 0 i32.const 1440 - i32.const 461 - i32.const 29 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + i32.load local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 + i32.const 1 + i32.and i32.eqz if - memory.size - local.tee $1 + i32.const 0 + i32.const 1440 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $3 - end - else - local.get $3 - end i32.const 4 - local.get $0 - i32.load offset=1568 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 16 - i32.shl i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 local.get $1 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock + i32.const 4 + i32.sub + i32.load local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and i32.eqz if i32.const 0 i32.const 1440 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store local.get $3 - local.get $1 - i32.load i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1440 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock + local.get $4 local.get $1 - i32.load - local.set $4 - local.get $3 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1440 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - i32.const -4 - i32.and - local.get $3 + i32.const 4 i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - local.get $4 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $4 - i32.const -2 - i32.and - i32.store - local.get $1 i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1312 - i32.const 1104 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1440 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 16 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 local.get $1 - i32.store offset=12 - local.get $2 + i32.store offset=96 local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and + i32.const 1 + local.get $2 + i32.shl i32.or i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size local.tee $1 i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $object-literal/OmittedFoo - block $object-literal/MixedOmitted - block $object-literal/OmittedTypes - block $object-literal/Managed - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34528 + i32.const 0 + i32.store + i32.const 36096 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - return end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=12 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=16 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=20 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=24 - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=28 - call $~lib/rt/itcms/__visit - return end - unreachable - ) - (func $~start - call $start:object-literal + i32.const 34528 + i32.const 36100 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34528 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$205 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$205 + end local.get $0 + i32.load offset=8 + local.tee $2 i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer + else local.get $1 - i32.store - local.get $3 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1200 + i32.const 1264 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 20 - i32.sub + i32.const 2 + i32.shl + i32.const 1716 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $object-literal/OmittedFoo + block $object-literal/MixedOmitted + block $object-literal/OmittedTypes + block $object-literal/Managed + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=12 + call $~lib/rt/itcms/__visit + local.get $0 i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit local.get $0 - i32.store + i32.load offset=20 + call $~lib/rt/itcms/__visit local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer + i32.load offset=24 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=28 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if local.get $1 - i32.const 7 - i32.and - i32.or - else i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$83 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$83 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $object-literal/testOmittedTypes (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if i32.const 0 - i32.const 1504 - i32.const 57 - i32.const 3 + i32.const 1440 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - if - i32.const 0 - i32.const 1504 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i64.load offset=8 - i64.const 0 - i64.ne - if - i32.const 0 - i32.const 1504 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i64.load offset=16 - i64.const 0 - i64.ne - if - i32.const 0 - i32.const 1504 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - f32.load offset=24 - f32.const 0 - f32.ne - if - i32.const 0 - i32.const 1504 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - f64.load offset=32 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1504 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load8_u offset=40 - if - i32.const 0 - i32.const 1504 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load8_u offset=41 - if - i32.const 0 - i32.const 1504 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load16_u offset=42 - if - i32.const 0 - i32.const 1504 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load16_u offset=44 - if - i32.const 0 - i32.const 1504 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=48 - if - i32.const 0 - i32.const 1504 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=52 - if - i32.const 0 - i32.const 1504 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - f64.load offset=56 - f64.const 0 - f64.ne - if - i32.const 0 - i32.const 1504 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load8_u offset=64 - if - i32.const 0 - i32.const 1504 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $object-literal/testOmittedFoo (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 + i32.const 1312 + i32.const 1440 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $1 - i32.store local.get $1 - i32.const 1664 - call $~lib/string/String.__eq + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 i32.eqz if + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow i32.const 0 - i32.const 1504 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store + local.get $3 local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - i32.eqz + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 - i32.const 1504 - i32.const 108 - i32.const 3 + i32.const 1440 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - local.tee $1 - i32.store local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 - i32.const 1504 - i32.const 109 - i32.const 3 + i32.const 1440 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=12 - local.tee $1 - i32.store + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 1504 - i32.const 110 - i32.const 3 + i32.const 1440 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.load offset=16 - local.tee $1 - i32.store + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1504 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=20 - local.tee $1 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store local.get $1 i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=24 - local.tee $1 - i32.store local.get $1 i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 113 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=1568 local.get $0 - i32.load offset=28 - local.tee $1 - i32.store local.get $1 - i32.const 0 - call $~lib/string/String.__eq + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 34516 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1504 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.store + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.load offset=32 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end if i32.const 0 - i32.const 1504 - i32.const 115 + i32.const 1440 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or i32.store - local.get $0 - i32.load offset=36 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1312 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1104 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:object-literal ) (func $start:object-literal (local $0 i32) @@ -3033,53 +2640,270 @@ global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $object-literal/testOmittedTypes (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + if + i32.const 0 + i32.const 1504 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + if + i32.const 0 + i32.const 1504 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=8 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1504 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 0 + i64.ne + if + i32.const 0 + i32.const 1504 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f32.load offset=24 + f32.const 0 + f32.ne + if + i32.const 0 + i32.const 1504 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f64.load offset=32 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_u offset=40 + if + i32.const 0 + i32.const 1504 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_u offset=41 + if + i32.const 0 + i32.const 1504 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_u offset=42 + if + i32.const 0 + i32.const 1504 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load16_u offset=44 + if + i32.const 0 + i32.const 1504 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=48 + if + i32.const 0 + i32.const 1504 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=52 + if + i32.const 0 + i32.const 1504 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f64.load offset=56 + f64.const 0 + f64.ne + if + i32.const 0 + i32.const 1504 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load8_u offset=64 + if + i32.const 0 + i32.const 1504 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $object-literal/testOmittedFoo (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3094,22 +2918,199 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + local.get $1 + i32.const 1696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store + local.get $1 i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $1 i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=20 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=24 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq i32.eqz if - global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 1504 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=28 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 1504 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store + local.get $0 + i32.load offset=32 + if + i32.const 0 + i32.const 1504 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=36 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) ) diff --git a/tests/compiler/operator-overload-non-ambiguity.release.wat b/tests/compiler/operator-overload-non-ambiguity.release.wat index 177a9d0d5c..375613c57c 100644 --- a/tests/compiler/operator-overload-non-ambiguity.release.wat +++ b/tests/compiler/operator-overload-non-ambiguity.release.wat @@ -34,50 +34,235 @@ (data $9 (i32.const 1536) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -623,7 +808,181 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $operator-overload-non-ambiguity/T1 + block $operator-overload-non-ambiguity/P2 + block $operator-overload-non-ambiguity/Base + block $operator-overload-non-ambiguity/P1 + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34352 + i32.const 0 + i32.store + i32.const 35920 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34352 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34352 + i32.const 35924 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34352 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) @@ -737,85 +1096,296 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34352 - i32.const 0 - i32.store - i32.const 35920 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34352 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34352 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34352 - i32.const 35924 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34352 - global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $operator-overload-non-ambiguity/T1#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $operator-overload-non-ambiguity/Base#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34340 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $operator-overload-non-ambiguity/Base#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $operator-overload-non-ambiguity/Base#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + call $operator-overload-non-ambiguity/T1#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + call $operator-overload-non-ambiguity/T1#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34368 + i32.const 34416 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -967,683 +1537,114 @@ global.set $~lib/rt/itcms/state end global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34340 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34340 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort unreachable end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $operator-overload-non-ambiguity/T1 - block $operator-overload-non-ambiguity/P2 - block $operator-overload-non-ambiguity/Base - block $operator-overload-non-ambiguity/P1 - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $operator-overload-non-ambiguity/P1 $operator-overload-non-ambiguity/Base $operator-overload-non-ambiguity/P2 $operator-overload-non-ambiguity/T1 $invalid - end - return - end - return - end - return - end - local.get $0 + local.get $0 + i32.const 34340 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34340 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 i32.load - call $~lib/rt/itcms/__visit - return + i32.const 1 + i32.and end - return + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - return end + i32.const 10 return end - return - end - unreachable - ) - (func $~start - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 34340 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $operator-overload-non-ambiguity/Base#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $operator-overload-non-ambiguity/Base#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - call $operator-overload-non-ambiguity/T1#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - call $operator-overload-non-ambiguity/T1#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $operator-overload-non-ambiguity/Base#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - if - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $operator-overload-non-ambiguity/T1#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - if - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - if - i32.const 34368 - i32.const 34416 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) ) diff --git a/tests/compiler/optional-typeparameters.release.wat b/tests/compiler/optional-typeparameters.release.wat index 86224fcc4c..9dd537f30a 100644 --- a/tests/compiler/optional-typeparameters.release.wat +++ b/tests/compiler/optional-typeparameters.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func)) - (type $1 (func (param i32) (result i32))) + (type $0 (func (param i32) (result i32))) + (type $1 (func)) (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) @@ -36,75 +36,6 @@ (data $8 (i32.const 1440) "\t\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00\02A\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $optional-typeparameters/tConcrete - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $optional-typeparameters/tDerived - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $optional-typeparameters/tMethodDerived - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $optional-typeparameters/tMethodDerived2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -257,90 +188,354 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u - else - i32.const 31 - i32.const 1073741820 + local.set $3 + local.get $1 local.get $3 + local.get $1 local.get $3 - i32.const 1073741820 - i32.ge_u + i32.gt_s select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + local.get $1 + i32.load + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load offset=8 - local.set $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.load offset=4 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 local.tee $4 if local.get $4 @@ -649,119 +844,168 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + block $invalid + block $optional-typeparameters/TestMethodDerived2 + block $~lib/array/Array<~lib/string/String> + block $optional-typeparameters/TestMethodDerived<~lib/string/String> + block $"optional-typeparameters/TestDerived" + block $"optional-typeparameters/TestConcrete" + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + if + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -843,903 +1087,660 @@ i32.const 34256 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34248 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $optional-typeparameters/tConcrete + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tDerived + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tMethodDerived2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 + i32.const 3 i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 - i32.and i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34248 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34248 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__visit_members local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 i32.const 16 i32.shl - i32.const 4 + i32.const 34248 i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 + i32.const 1 i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 i32.store - local.get $1 - i32.const 32 + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $3 - local.get $4 + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tConcrete + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tConcrete + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tDerived + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tDerived + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tMethodDerived + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $optional-typeparameters/tMethodDerived2 + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tMethodDerived + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.const 1 - i32.or + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1480 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/memory/__stack_pointer + return end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 + i32.const 34272 + i32.const 34320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - block $invalid - block $optional-typeparameters/TestMethodDerived2 - block $~lib/array/Array<~lib/string/String> - block $optional-typeparameters/TestMethodDerived<~lib/string/String> - block $"optional-typeparameters/TestDerived" - block $"optional-typeparameters/TestConcrete" - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $"optional-typeparameters/TestConcrete" $"optional-typeparameters/TestDerived" $optional-typeparameters/TestMethodDerived<~lib/string/String> $~lib/array/Array<~lib/string/String> $optional-typeparameters/TestMethodDerived2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - if - i32.const 34272 - i32.const 34320 i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + global.get $~lib/rt/itcms/white + i32.eqz local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i32.load - local.tee $3 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 34248 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $optional-typeparameters/tConcrete - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tConcrete - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $optional-typeparameters/tDerived - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tDerived - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $optional-typeparameters/tMethodDerived - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tMethodDerived - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $optional-typeparameters/tMethodDerived2 - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tMethodDerived2 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $optional-typeparameters/tMethodDerived + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34248 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34248 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34248 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1480 - i32.lt_s - if - i32.const 34272 - i32.const 34320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) ) diff --git a/tests/compiler/possibly-null.release.wat b/tests/compiler/possibly-null.release.wat index b681c5b383..a187c01fee 100644 --- a/tests/compiler/possibly-null.release.wat +++ b/tests/compiler/possibly-null.release.wat @@ -1,6 +1,6 @@ (module - (type $0 (func (param i32))) - (type $1 (func (param i32 i32))) + (type $0 (func (param i32 i32))) + (type $1 (func (param i32))) (type $2 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33792)) @@ -8,108 +8,23 @@ (export "memory" (memory $0)) (export "testTrue" (func $export:possibly-null/testTrue)) (export "testFalseElse" (func $export:possibly-null/testTrue)) - (export "testFalseContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testFalseContinuation" (func $export:possibly-null/testNotNeNullContinuation)) (export "testNeNull" (func $export:possibly-null/testTrue)) (export "testEqNullElse" (func $export:possibly-null/testTrue)) - (export "testEqNullContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testEqNullContinuation" (func $export:possibly-null/testNotNeNullContinuation)) (export "testNotEqNull" (func $export:possibly-null/testTrue)) (export "testNotNeNullElse" (func $export:possibly-null/testTrue)) - (export "testNotNeNullContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testNotNeNullContinuation" (func $export:possibly-null/testNotNeNullContinuation)) (export "testWhile" (func $export:possibly-null/testWhile)) (export "testWhile2" (func $export:possibly-null/testWhile2)) (export "testWhile3" (func $export:possibly-null/testWhile3)) - (export "testLogicalAnd" (func $export:possibly-null/testLogicalAnd)) - (export "testLogicalOr" (func $export:possibly-null/testLogicalAnd)) - (export "testLogicalAndMulti" (func $export:possibly-null/testLogicalAndMulti)) - (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalAndMulti)) + (export "testLogicalAnd" (func $export:possibly-null/testLogicalOr)) + (export "testLogicalOr" (func $export:possibly-null/testLogicalOr)) + (export "testLogicalAndMulti" (func $export:possibly-null/testLogicalOrMulti)) + (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalOrMulti)) (export "testAssign" (func $export:possibly-null/testAssign)) (export "testNeverNull" (func $export:possibly-null/testTrue)) - (func $export:possibly-null/testTrue (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1024 - i32.lt_s - if - i32.const 33824 - i32.const 33872 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:possibly-null/testFalseContinuation (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1024 - i32.lt_s - if - i32.const 33824 - i32.const 33872 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$possibly-null/testFalseContinuation$12 - local.get $0 - i32.eqz - br_if $__inlined_func$possibly-null/testFalseContinuation$12 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:possibly-null/testWhile (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1024 - i32.lt_s - if - i32.const 33824 - i32.const 33872 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - loop $while-continue|0 - local.get $0 - if - i32.const 0 - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) + (func $export:possibly-null/testWhile3 (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -139,10 +54,14 @@ loop $while-continue|0 local.get $0 if - global.get $~lib/memory/__stack_pointer local.get $1 - local.tee $0 - i32.store + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.set $0 + end br $while-continue|0 end end @@ -163,7 +82,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:possibly-null/testWhile3 (param $0 i32) (param $1 i32) + (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -193,14 +112,10 @@ loop $while-continue|0 local.get $0 if + global.get $~lib/memory/__stack_pointer local.get $1 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.set $0 - end + local.tee $0 + i32.store br $while-continue|0 end end @@ -221,7 +136,119 @@ call $~lib/builtins/abort unreachable ) - (func $export:possibly-null/testLogicalAnd (param $0 i32) + (func $export:possibly-null/testWhile (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $while-continue|0 + local.get $0 + if + i32.const 0 + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testTrue (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNotNeNullContinuation (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$possibly-null/testNotNeNullContinuation$24 + local.get $0 + i32.eqz + br_if $__inlined_func$possibly-null/testNotNeNullContinuation$24 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalOrMulti (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 33824 + i32.const 33872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalOr (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -268,33 +295,6 @@ call $~lib/builtins/abort unreachable ) - (func $export:possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1024 - i32.lt_s - if - i32.const 33824 - i32.const 33872 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $export:possibly-null/testAssign (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 diff --git a/tests/compiler/reexport.release.wat b/tests/compiler/reexport.release.wat index a96b58bb2b..b6b81aebab 100644 --- a/tests/compiler/reexport.release.wat +++ b/tests/compiler/reexport.release.wat @@ -5,8 +5,8 @@ (type $3 (func (param i32 i32))) (type $4 (func (result i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -51,67 +51,6 @@ (export "renamed_default" (func $export-default/theDefault)) (export "memory" (memory $0)) (start $~start) - (func $export/add (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.mul - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $reexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -656,6 +595,176 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34288 + i32.const 0 + i32.store + i32.const 35856 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34288 + i32.const 35860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34288 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -770,85 +879,189 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $reexport/car + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34288 - i32.const 0 - i32.store - i32.const 35856 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34288 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34288 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34288 - i32.const 35860 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34288 - global.set $~lib/rt/tlsf/ROOT + ) + (func $export/add (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $export-default/theDefault + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34280 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1110,63 +1323,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) (local $1 i32) @@ -1223,12 +1379,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1241,7 +1396,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s @@ -1400,160 +1557,4 @@ local.get $1 i32.sub ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34280 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/rereexport.release.wat b/tests/compiler/rereexport.release.wat index f61fba72ac..30e4698072 100644 --- a/tests/compiler/rereexport.release.wat +++ b/tests/compiler/rereexport.release.wat @@ -47,69 +47,6 @@ (export "renamed_default" (func $export-default/theDefault)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $rereexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $rereexport/exportsNamespaceCar - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $reexport/car - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -654,145 +591,187 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $exports/Car + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__visit + return end + return end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 + unreachable + ) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s if - return + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 + i32.store local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize + (func $exports/Car#constructor (result i32) (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34336 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 35904 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 i32.store loop $for-loop|0 local.get $0 @@ -848,6 +827,313 @@ i32.const 34336 global.set $~lib/rt/tlsf/ROOT ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $rereexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $export-default/theDefault + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34328 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + call $exports/Car#get:numDoors + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) @@ -1087,83 +1373,26 @@ local.get $2 local.get $2 i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) @@ -1221,12 +1450,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1239,7 +1467,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s @@ -1393,233 +1623,4 @@ i32.store align=1 local.get $0 ) - (func $export-default/theDefault - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $exports/Car - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $exports/Car $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34328 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - call $exports/Car#get:numDoors - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $exports/Car#constructor - global.set $rereexport/car - global.get $~lib/memory/__stack_pointer - global.get $rereexport/car - local.tee $0 - i32.store - local.get $0 - call $exports/Car#get:numDoors - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $~lib/memory/__stack_pointer - global.get $rereexport/exportsNamespaceCar - local.tee $0 - i32.store - local.get $0 - call $exports/Car#get:numDoors - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $exports/Car#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/resolve-access.release.wat b/tests/compiler/resolve-access.release.wat index bc5cd261d7..427ef20e2d 100644 --- a/tests/compiler/resolve-access.release.wat +++ b/tests/compiler/resolve-access.release.wat @@ -2,11 +2,11 @@ (type $0 (func (result i32))) (type $1 (func (param i32))) (type $2 (func)) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) (type $8 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -52,187 +52,6 @@ (export "propertyAccess" (func $resolve-access/propertyAccess)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 2160 - call $~lib/rt/itcms/__visit - i32.const 3216 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$143 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 36096 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$143 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 3296 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 3300 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -257,330 +76,491 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1424 - i32.const 268 - i32.const 14 + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1088 i32.const 1424 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1424 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1424 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $4 + local.tee $3 + local.get $3 i32.load - local.set $2 + i32.const -3 + i32.and + i32.store end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 local.get $3 - i32.const 2 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - if + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 1424 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i32.load + i32.store local.get $1 - local.get $6 - i32.const 4 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl i32.add - local.get $3 - i32.const -4 - i32.and + local.get $1 + i32.const 2 + i32.shl + i32.const 1740 i32.add - local.tee $3 + i32.load i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.eqz if i32.const 0 i32.const 1424 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1424 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -588,520 +568,493 @@ if i32.const 0 i32.const 1424 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 + (local $6 i32) local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz if i32.const 0 i32.const 1424 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1424 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 i32.add - local.tee $3 i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - local.get $3 - i32.store offset=1568 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - i32.const 36096 - i32.const 0 - i32.store - i32.const 37664 - i32.const 0 - i32.store - loop $for-loop|0 + block $__inlined_func$~lib/rt/itcms/Object#unlink$143 local.get $0 - i32.const 23 - i32.lt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if local.get $0 - i32.const 2 - i32.shl + i32.load offset=8 + i32.eqz + local.get $0 i32.const 36096 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36096 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + br $__inlined_func$~lib/rt/itcms/Object#unlink$143 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - i32.const 36096 - i32.const 37668 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36096 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 3296 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 3300 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-access/Container + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid + end + return + end + return + end return end local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36096 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + i32.load + call $~lib/rt/itcms/__visit + return end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array~visit + return end local.get $0 - i32.const 36096 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36096 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 + call $~lib/array/Array~visit return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1182,471 +1135,297 @@ i32.const 4 i32.shl i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1088 - i32.const 1424 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 + i32.const 2 + i32.shl i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort unreachable end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1424 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable end end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow i32.const 0 - i32.const 1424 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort + i32.lt_s + else + i32.const 0 + end + if unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock + i32.const 36096 + i32.const 0 + i32.store + i32.const 37664 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36096 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36096 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36096 + i32.const 37668 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36096 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1424 - i32.const 361 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 + local.get $1 + i32.const 16 i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 2160 + call $~lib/rt/itcms/__visit + i32.const 3216 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 loop $while-continue|0 + local.get $0 local.get $1 - i32.const 10000 - i32.ge_u + i32.ne if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1740 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 br $while-continue|0 end end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end ) (func $~lib/number/U64#toString (param $0 i64) (result i32) (local $1 i32) @@ -1928,42 +1707,76 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-access/Container - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return + (func $resolve-access/Container#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable ) (func $~start @@ -2000,282 +1813,265 @@ i32.const 1376 global.set $~lib/rt/itcms/fromSpace ) - (func $resolve-access/arrayAccess (result i32) + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.const 1056 - i64.load align=1 - i64.store align=1 - local.get $4 - i32.store - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $4 - i32.store - local.get $4 + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36096 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $3 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1152 - i32.const 295 - i32.const 14 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $4 - i32.const 20 - i32.sub - local.tee $5 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + local.get $0 + i32.const 36096 + i32.lt_u if - local.get $3 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 i32.and - local.tee $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36096 + i32.ge_u if - local.get $5 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $1 - i32.const 3 - i32.eq - i32.and + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $5 - call $~lib/rt/itcms/Object#makeGray + call $~lib/rt/tlsf/initialize end - end - end - end - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - i32.const 8 - i32.store offset=8 - local.get $3 - i32.const 1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $~lib/number/U64#toString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 36128 - i32.const 36176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $resolve-access/Container#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 36128 - i32.const 36176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $resolve-access/fieldAccess (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.lt_s - if - i32.const 36128 - i32.const 36176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - call $resolve-access/Container#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 1 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load - call $~lib/number/U64#toString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $resolve-access/propertyAccess (result i32) (local $0 i32) @@ -2428,4 +2224,209 @@ call $~lib/builtins/abort unreachable ) + (func $resolve-access/fieldAccess (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + if + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $resolve-access/Container#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $resolve-access/arrayAccess (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 1056 + i64.load align=1 + i64.store align=1 + local.get $4 + i32.store + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $4 + i32.store + local.get $4 + if + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $4 + i32.const 20 + i32.sub + local.tee $5 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $3 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + i32.const 8 + i32.store offset=8 + local.get $3 + i32.const 1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36128 + i32.const 36176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/resolve-binary.release.wat b/tests/compiler/resolve-binary.release.wat index d7685c983c..73db3a219c 100644 --- a/tests/compiler/resolve-binary.release.wat +++ b/tests/compiler/resolve-binary.release.wat @@ -1,13 +1,13 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func)) (type $2 (func (result i32))) - (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i64))) (type $9 (func (param i64 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $resolve-binary/a (mut i32) (i32.const 0)) @@ -237,114 +237,323 @@ (data $45 (i32.const 11216) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-binary/foo - local.tee $0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 44048 + i32.const 44096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $resolve-binary/bar - local.tee $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - global.get $resolve-binary/bar2 - local.tee $0 - if + block $folding-inner0 + local.get $1 + i32.eqz local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-binary/baz - local.tee $0 - if + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1600 - call $~lib/rt/itcms/__visit - i32.const 1408 - call $~lib/rt/itcms/__visit - i32.const 2208 - call $~lib/rt/itcms/__visit - i32.const 3264 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1472 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$81 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$81 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/itcms/__visit (param $0 i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.lt_s if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 44048 + i32.const 44096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$74 + local.get $0 + i32.eqz if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1376 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$74 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $1 + select + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 global.set $~lib/rt/itcms/iter end @@ -462,330 +671,491 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1744 - i32.const 268 - i32.const 14 + i32.const 1408 + i32.const 1472 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1408 i32.const 1744 - i32.const 270 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + local.get $4 + local.get $2 + i32.const 12 + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1744 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1744 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 i32.const 4 i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else local.get $2 - i32.const -4 + local.get $6 + i32.const -2 i32.and - i32.add - local.tee $3 i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $4 + local.tee $3 + local.get $3 i32.load - local.set $2 + i32.const -3 + i32.and + i32.store end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 1744 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1788 + i32.add + i32.load + i32.store local.get $1 - local.get $6 - i32.const 4 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl i32.add - local.get $3 - i32.const -4 - i32.and + local.get $1 + i32.const 2 + i32.shl + i32.const 1788 i32.add - local.tee $3 + i32.load i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.eqz if i32.const 0 i32.const 1744 - i32.const 233 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1744 - i32.const 234 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -793,2318 +1163,1983 @@ if i32.const 0 i32.const 1744 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 + local.get $2 i32.const 4 i32.shl - local.get $2 + local.get $3 i32.add i32.const 2 i32.shl i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 + (local $6 i32) local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz if i32.const 0 i32.const 1744 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1744 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1744 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1744 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1744 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 44016 - i32.const 0 - i32.store - i32.const 45584 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 44016 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-binary/Baz + block $resolve-binary/Bar + block $resolve-binary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-binary/Foo $resolve-binary/Bar $resolve-binary/Baz $invalid + end + return + end + return + end + return + end local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 44016 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.load + call $~lib/rt/itcms/__visit + return end + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + return end + return end - i32.const 44016 - i32.const 45588 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 44016 - global.set $~lib/rt/tlsf/ROOT + unreachable ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.lt_s + if + i32.const 44048 + i32.const 44096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/number/F64#toString (result i32) + (local $0 i64) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 44016 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1472 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 44016 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 44016 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1744 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1408 - i32.const 1472 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$70 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1408 - i32.const 1744 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + (local $3 i64) + (local $4 i64) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.lt_s if - i32.const 0 - i32.const 1744 - i32.const 501 - i32.const 14 + i32.const 44048 + i32.const 44096 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -4 + global.set $~lib/util/number/_K + i32.const 10136 + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 10568 + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $3 + i64.const 4294967295 + i64.and + local.tee $0 + i64.const 31 + i64.shl + local.set $4 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + i64.const 31 + i64.shl + local.get $0 + i64.const 31 + i64.shl + local.get $0 + i64.const 10 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + i64.const 4294967295 + i64.and + local.get $3 + i64.const 10 + i64.shl + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 31 + i64.shl local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + i64.const 4294967295 + i64.and + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add local.get $5 - i32.const 4 + global.get $~lib/util/number/_exp_pow + i32.const 3 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1744 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + local.get $3 + i64.const 2147483647 + i64.mul + local.get $0 + i64.const 2147483647 + i64.mul + local.get $0 + i64.const 4294966784 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $0 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + i64.const 4294966784 + i64.mul + local.get $0 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + call $~lib/util/number/genDigits + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 9728 + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 + local.get $1 i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 + local.tee $2 i32.const 4 - i32.add + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 7 + i32.sub + local.set $2 end - local.get $2 local.get $1 - i32.store offset=12 + i32.const 16 + i32.lt_u local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 local.get $2 - local.get $3 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.const -1 local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 + i32.shl i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 + if (result i32) + local.get $0 local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.const 10000 - i32.div_u - local.set $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $2 + i32.ctz + local.get $1 i32.const 4 - i32.sub - local.tee $2 - i32.const 1 i32.shl i32.add - local.get $3 - i32.const 100 - i32.div_u i32.const 2 i32.shl - i32.const 1788 i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 44016 + i32.const 0 + i32.store + i32.const 45584 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 i32.const 2 i32.shl - i32.const 1788 + i32.const 44016 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 44016 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end + i32.const 44016 + i32.const 45588 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 44016 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1744 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 100 - i32.ge_u + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl + local.get $3 + i32.const 4 i32.add local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1788 - i32.add - i32.load - i32.store + i32.gt_u + if + i32.const 0 + i32.const 1744 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 + i32.const 16 i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1788 - i32.add - i32.load - i32.store + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + i32.const 1572 i32.add local.get $1 - i32.const 48 - i32.add - i32.store16 + i32.gt_u + if + i32.const 0 + i32.const 1744 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 44048 - i32.const 44096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store - block $__inlined_func$~lib/util/number/itoa32$74 + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-binary/foo + local.tee $0 + if local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1376 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32$74 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/bar + local.tee $0 + if local.get $0 - i32.sub + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/bar2 + local.tee $0 + if local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-binary/baz + local.tee $0 + if local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $1 - select - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $2 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + call $~lib/rt/itcms/__visit + end + i32.const 1600 + call $~lib/rt/itcms/__visit + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 2208 + call $~lib/rt/itcms/__visit + i32.const 3264 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.add - local.get $3 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $1 + i32.ne if local.get $0 - i32.const 45 - i32.store16 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer end - local.get $0 ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 - local.get $2 + (func $resolve-binary/Bar#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $11 - i64.extend_i32_s + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 11248 + i32.lt_s + if + i32.const 44048 + i32.const 44096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new local.tee $0 - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - local.get $1 - i64.and - local.set $8 - local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $5 - i32.const 1000000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $2 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $2 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $2 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $2 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $2 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $2 - end + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + call $start:resolve-binary + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + local.get $0 + i32.const 1 + i32.shl + i32.const 9728 + i32.add + i32.const 3145774 + i32.store + local.get $0 + i32.const 2 + i32.add + return + end + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 21 + i32.le_s + local.get $0 + local.get $2 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $0 local.get $2 - local.get $4 - i32.or + i32.lt_s if - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 + local.get $0 i32.const 1 i32.shl i32.const 9728 i32.add - local.get $2 - i32.const 65535 - i32.and i32.const 48 - i32.add i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $7 + end + local.get $2 + i32.const 1 + i32.shl + i32.const 9728 + i32.add + i32.const 3145774 + i32.store + local.get $2 + i32.const 2 + i32.add + else + local.get $2 + i32.const 21 + i32.le_s + local.get $2 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $2 i32.const 1 + i32.shl + i32.const 9728 + i32.add + local.tee $2 + i32.const 2 + i32.add + local.get $2 + i32.const 0 + local.get $1 i32.sub - local.set $7 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $8 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 + i32.const 1 + i32.shl + memory.copy + local.get $2 + i32.const 46 + i32.store16 + local.get $0 + i32.const 1 + i32.add + else + local.get $2 + i32.const 0 + i32.le_s + local.get $2 + i32.const -6 + i32.gt_s + i32.and + if (result i32) i32.const 2 + local.get $2 + i32.sub + local.tee $2 + i32.const 1 i32.shl - i32.const 10656 + i32.const 9728 i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $1 - local.get $4 + i32.const 9728 + local.get $0 i32.const 1 i32.shl - i32.const 9726 + memory.copy + i32.const 9728 + i32.const 3014704 + i32.store + i32.const 2 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + i32.const 1 + i32.shl + i32.const 9728 + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.get $2 i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|3 + else + local.get $0 + i32.const 1 + i32.eq + if + i32.const 9730 + i32.const 101 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $1 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + i32.const 9732 local.get $0 - local.get $9 - i64.lt_u - local.get $3 local.get $0 - i64.sub + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + i32.const 9732 + i32.const 45 + i32.const 43 + local.get $1 + select + i32.store16 + else + i32.const 9732 + i32.const 9730 + local.get $0 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + i32.sub + memory.copy + i32.const 9730 + i32.const 46 + i32.store16 local.get $1 - i64.ge_u - i32.and + i32.const 9728 + i32.add + local.tee $1 + i32.const 101 + i32.store16 offset=2 + local.get $1 + i32.const 4 + i32.add + local.tee $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u if (result i32) - local.get $0 local.get $1 - i64.add - local.tee $8 - local.get $9 - i64.lt_u - local.get $9 - local.get $0 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 local.get $1 - i64.add - local.set $0 - br $while-continue|3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $8 - i64.const 10 - i64.mul - local.tee $0 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $1 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $0 - local.get $12 - i64.and - local.tee $8 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 10656 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 9726 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|6 - local.get $0 - local.get $8 - i64.gt_u - local.get $3 - local.get $8 - i64.sub - local.get $10 - i64.ge_u - i32.and - if (result i32) - local.get $8 - local.get $10 - i64.add - local.tee $1 - local.get $0 - i64.lt_u - local.get $0 - local.get $8 - i64.sub - local.get $1 - local.get $0 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $8 - local.get $10 - i64.add - local.set $8 - br $while-continue|6 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - local.get $0 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 3145774 - i32.store - local.get $0 - i32.const 2 - i32.add - return + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $3 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $0 + end + local.get $0 + i32.const 2 + i32.add + end + end end - local.get $0 + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i64) local.get $1 - i32.add - local.tee $2 - i32.const 21 - i32.le_s local.get $0 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 local.get $2 - i32.le_s - i32.and + i32.sub + local.tee $11 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $12 + local.get $1 + i64.and + local.set $8 + local.get $1 + local.get $0 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 100000 + i32.lt_u if (result i32) - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 48 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 3145774 - i32.store - local.get $2 - i32.const 2 - i32.add - else - local.get $2 - i32.const 21 - i32.le_s - local.get $2 - i32.const 0 - i32.gt_s - i32.and + local.get $5 + i32.const 100 + i32.lt_u if (result i32) - local.get $2 + local.get $5 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl - i32.const 9728 i32.add - local.tee $2 - i32.const 2 + else + local.get $5 + i32.const 10000 + i32.ge_u + i32.const 3 i32.add - local.get $2 - i32.const 0 - local.get $1 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $2 - i32.const 46 - i32.store16 - local.get $0 - i32.const 1 + local.get $5 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1000000 + i32.ge_u + i32.const 6 i32.add else - local.get $2 - i32.const 0 - i32.le_s - local.get $2 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - i32.const 2 - local.get $2 - i32.sub - local.tee $2 + local.get $5 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $5 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $2 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $2 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $5 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 100000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100000 + i32.div_u + local.set $6 + local.get $5 + i32.const 100000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 1000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10 + i32.div_u + local.set $6 + local.get $5 + i32.const 10 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + local.set $6 + i32.const 0 + local.set $5 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $4 + local.get $6 + i32.or + if + local.get $4 + local.tee $7 i32.const 1 - i32.shl - i32.const 9728 i32.add - i32.const 9728 - local.get $0 + local.set $4 + local.get $7 i32.const 1 i32.shl - memory.copy i32.const 9728 - i32.const 3014704 - i32.store - i32.const 2 - local.set $1 - loop $for-loop|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $1 - i32.const 1 - i32.shl - i32.const 9728 - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $5 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $8 + i64.add + local.tee $0 + i64.ge_u + if + global.get $~lib/util/number/_K local.get $2 i32.add - else - local.get $0 + global.set $~lib/util/number/_K + local.get $2 + i32.const 2 + i32.shl + i32.const 10656 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 i32.const 1 - i32.eq - if - i32.const 9730 - i32.const 101 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 9732 + i32.shl + i32.const 9726 + i32.add + local.tee $5 + i32.load16_u + local.set $2 + loop $while-continue|3 local.get $0 + local.get $9 + i64.lt_u + local.get $3 local.get $0 - i32.const 100000 - i32.lt_u + i64.sub + local.get $1 + i64.ge_u + i32.and if (result i32) local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else + local.get $1 + i64.add + local.tee $8 + local.get $9 + i64.lt_u + local.get $9 local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - i32.const 9732 - i32.const 45 - i32.const 43 - local.get $1 - select - i32.store16 - else - i32.const 9732 - i32.const 9730 - local.get $0 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - i32.sub - memory.copy - i32.const 9730 - i32.const 46 - i32.store16 - local.get $1 - i32.const 9728 - i32.add - local.tee $1 - i32.const 101 - i32.store16 offset=2 - local.get $1 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $1 - i32.const 0 - i32.lt_s - local.tee $2 - if + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else i32.const 0 - local.get $1 - i32.sub - local.set $1 end - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $0 end - local.get $0 - i32.const 2 - i32.add + local.get $5 + local.get $2 + i32.store16 + local.get $4 + return end + br $while-continue|0 end end - ) - (func $~lib/number/F64#toString (result i32) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - i32.const 1 + loop $while-continue|4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + local.get $8 + i64.const 10 + i64.mul + local.tee $0 + local.get $11 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $4 + local.tee $5 + i32.const 1 + i32.add + local.set $4 + local.get $5 + i32.const 1 + i32.shl + i32.const 9728 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $2 + local.get $0 + local.get $12 + i64.and + local.tee $8 + local.get $3 + i64.ge_u + br_if $while-continue|4 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const -4 + global.get $~lib/util/number/_K + local.get $2 + i32.add global.set $~lib/util/number/_K - i32.const 10136 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 10568 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $3 - i64.const 4294967295 - i64.and - local.tee $0 - i64.const 31 - i64.shl - local.set $4 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - i64.const 31 - i64.shl - local.get $0 - i64.const 31 - i64.shl - local.get $0 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - i64.const 4294967295 - i64.and - local.get $3 - i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 - local.get $3 - i64.const 31 - i64.shl - local.get $4 - i64.const 32 - i64.shr_u - i64.add - local.get $4 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $5 - global.get $~lib/util/number/_exp_pow - i32.const 3 + local.get $9 + i32.const 0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.const 10656 i32.add - local.get $5 - local.get $3 - i64.const 2147483647 - i64.mul - local.get $0 - i64.const 2147483647 - i64.mul - local.get $0 - i64.const 4294966784 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $0 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 + i64.load32_u i64.mul - local.get $0 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify + local.set $0 + local.get $4 i32.const 1 i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 9728 - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 9726 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $5 + i32.load16_u + local.set $2 + loop $while-continue|6 + local.get $0 + local.get $8 + i64.gt_u + local.get $3 + local.get $8 + i64.sub + local.get $10 + i64.ge_u + i32.and + if (result i32) + local.get $8 + local.get $10 + i64.add + local.tee $1 + local.get $0 + i64.lt_u + local.get $0 + local.get $8 + i64.sub + local.get $1 + local.get $0 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $8 + local.get $10 + i64.add + local.set $8 + br $while-continue|6 + end + end + local.get $5 local.get $2 + i32.store16 + local.get $4 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-binary/Baz - block $resolve-binary/Bar - block $resolve-binary/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-binary/Foo $resolve-binary/Bar $resolve-binary/Baz $invalid - end - return - end - return - end + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - return end - return - end - return - end - unreachable - ) - (func $~start - call $start:resolve-binary - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 44016 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$81 - loop $while-continue|1 + local.get $0 + i32.const 44016 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 44016 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1744 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $resolve-binary/Bar#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/object/Object#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) (func $start:resolve-binary (local $0 i32) @@ -4284,39 +4319,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 11248 - i32.lt_s - if - i32.const 44048 - i32.const 44096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/resolve-elementaccess.release.wat b/tests/compiler/resolve-elementaccess.release.wat index bc80e8c9b3..8a6fc68b91 100644 --- a/tests/compiler/resolve-elementaccess.release.wat +++ b/tests/compiler/resolve-elementaccess.release.wat @@ -5,15 +5,15 @@ (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) - (type $10 (func (param f64) (result i32))) - (type $11 (func (param f32) (result i32))) - (type $12 (func (param i32) (result i32))) - (type $13 (func (param i32 i32 f32))) - (type $14 (func (param i32 i32) (result f32))) + (type $6 (func (param i32 i32) (result f32))) + (type $7 (func (param i32 i32 f32))) + (type $8 (func (param i32) (result i32))) + (type $9 (func (param f32) (result i32))) + (type $10 (func (param i32 i32 i64))) + (type $11 (func (param i32 i32 i32) (result i32))) + (type $12 (func (param i64 i64 i32 i64 i32) (result i32))) + (type $13 (func (param f64) (result i32))) + (type $14 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -90,201 +90,6 @@ (data $32 (i32.const 4800) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\01\19\00\00A\00\00\00A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-elementaccess/arr - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $resolve-elementaccess/buf - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 3568 - call $~lib/rt/itcms/__visit - i32.const 4624 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$153 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 37600 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$153 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 4800 - i32.load - i32.gt_u - if - i32.const 1360 - i32.const 1424 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 4804 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -309,897 +114,849 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 268 - i32.const 14 + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 i32.const 1504 - i32.const 284 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $5 + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 local.get $3 - i32.eqz + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + unreachable end end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 i32.const 1504 - i32.const 201 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - local.tee $3 - i32.const 1 + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 i32.and - i32.eqz if i32.const 0 i32.const 1504 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1504 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.or + i32.store offset=4 local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 i32.add - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 234 - i32.const 14 + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 251 - i32.const 14 + i32.const 1360 + i32.const 1568 + i32.const 167 + i32.const 45 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 i32.add - i32.const 2 - i32.shl + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + i32.store local.get $1 - i32.store offset=96 local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1568 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 382 - i32.const 14 + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=1568 - local.tee $3 + local.get $1 + i32.eq if - local.get $3 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 local.get $1 - i32.const 16 + i32.const 20 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1572 - i32.add + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_u + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$97 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$97 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end i32.const 0 - i32.const 1504 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $3 end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s + if + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1568 + i32.const 178 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $1 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 37600 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 39168 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1568 + i32.const 1315 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u i32.const 2 i32.shl - i32.const 37600 + i32.const 2744 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 37600 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2744 i32.add - local.set $0 - br $for-loop|0 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - i32.const 37600 - i32.const 39172 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 37600 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 37600 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 37600 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 37600 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1504 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.const 100 + i32.ge_u if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 - i32.const 4 - i32.shr_u + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2744 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u local.set $1 - else + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.const 2 + i32.shl + i32.const 2744 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1210,1660 +967,1062 @@ if i32.const 0 i32.const 1504 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1504 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.get $1 + i32.eqz if - i32.const 1168 - i32.const 1232 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.const 1 + i32.and if - i32.const 1168 - i32.const 1504 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 i32.add - i32.const -16 + local.get $2 + i32.const -4 i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $3 + i32.const 2 + i32.and if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl + local.get $1 i32.const 4 i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1504 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1504 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1504 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add + i32.const 2 + i32.shl i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl i32.add - local.tee $1 - i32.const 0 + local.tee $0 local.get $0 - memory.fill - local.get $1 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $1 - i32.store - local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq if local.get $0 + i32.load offset=8 + local.tee $1 i32.eqz if i32.const 0 i32.const 1232 - i32.const 295 - i32.const 14 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$153 + local.get $0 i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - i32.eq + local.tee $1 + i32.eqz if local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 37600 + i32.lt_u i32.and - local.tee $0 - global.get $~lib/rt/itcms/white i32.eqz - i32.eq if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$153 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 - i64.sub - local.set $10 - i64.const 1 - i32.const 0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 4800 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 4804 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 local.get $2 - i32.sub - local.tee $11 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $7 - i64.const 1 - i64.sub - local.tee $12 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 local.get $1 - i64.and - local.set $9 + i32.store offset=8 local.get $1 local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $8 - loop $while-continue|0 - local.get $8 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $8 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $4 - local.get $6 - i32.or - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 1776 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $9 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 2704 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $7 - local.get $4 - i32.const 1 - i32.shl - i32.const 1774 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|3 - local.get $0 - local.get $10 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $7 - i64.ge_u - i32.and - if (result i32) - local.get $10 - local.get $0 - local.get $7 - i64.add - local.tee $1 - i64.gt_u - local.get $10 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object local.get $0 - i64.sub - local.get $1 - local.get $10 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 + i32.const 8 i32.sub - local.set $6 - local.get $0 - local.get $7 - i64.add - local.set $0 - br $while-continue|3 + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid end + return end - local.get $2 - local.get $6 - i32.store16 - local.get $4 return end - br $while-continue|0 + return end + unreachable end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $9 - i64.const 10 - i64.mul - local.tee $1 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $0 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 1776 - i32.add - local.get $0 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $8 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/number/U8#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s + if + i32.const 37632 + i32.const 37680 i32.const 1 - i32.sub - local.set $8 - local.get $1 - local.get $12 - i64.and - local.tee $9 - local.get $3 - i64.ge_u - br_if $while-continue|4 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 2704 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 1774 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|6 - local.get $1 - local.get $9 - i64.gt_u - local.get $3 - local.get $9 - i64.sub - local.get $7 - i64.ge_u + i32.store + block $__inlined_func$~lib/util/number/utoa32$79 + local.get $0 + i32.const 255 i32.and - if (result i32) - local.get $1 - local.get $7 - local.get $9 - i64.add - local.tee $0 - i64.gt_u - local.get $1 - local.get $9 - i64.sub - local.get $0 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $7 - local.get $9 - i64.add - local.set $9 - br $while-continue|6 - end - end - local.get $2 - local.get $6 - i32.store16 - local.get $4 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u + local.tee $1 + i32.eqz if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 2744 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2744 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + global.set $~lib/memory/__stack_pointer + i32.const 3536 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32$79 end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer + i32.const 3 local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2744 + i32.const 10 + i32.ge_u + i32.const 1 i32.add - i32.load - i32.store local.get $1 i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub + i32.ge_u + select + local.tee $2 i32.const 1 i32.shl - i32.add - local.get $1 i32.const 2 - i32.shl - i32.const 2744 - i32.add - i32.load + call $~lib/rt/itcms/__new + local.tee $0 i32.store - else local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add local.get $1 - i32.const 48 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.store16 + global.set $~lib/memory/__stack_pointer end + local.get $0 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/number/F32#toString (param $0 f32) (result i32) + (local $1 f64) + (local $2 i32) (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.lt_s if + i32.const 37632 + i32.const 37680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1632 + local.set $2 + block $~lib/util/number/dtoa_impl|inlined.0 local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store local.get $1 - i32.const 2 - i32.add - return - end + f64.sub + f64.const 0 + f64.ne + if + i32.const 1664 + local.set $2 + local.get $1 + local.get $1 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 1696 + i32.const 1744 + local.get $1 + f64.const 0 + f64.lt + select + local.set $2 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 1776 + local.get $3 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $2 + i32.const 2 + i32.shl i32.add - local.tee $3 - i32.const 21 - i32.le_s + i32.load offset=4 + i32.const -1 local.get $1 - local.get $3 - i32.le_s + i32.shl i32.and + local.tee $1 if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end local.get $0 - local.get $3 - i32.const 1 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 i32.shl i32.add - i32.const 3145774 - i32.store - local.get $3 i32.const 2 + i32.shl i32.add + i32.load offset=96 else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 - i32.const 0 - i32.gt_s + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and + local.tee $1 if (result i32) local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 + local.get $1 + i32.ctz + local.tee $1 i32.const 2 + i32.shl i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 0 local.get $2 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 + i32.ctz local.get $1 - i32.const 1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl i32.add + i32.load offset=96 else - local.get $3 i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37600 + i32.const 0 + i32.store + i32.const 39168 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37600 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq + i32.const 16 + i32.lt_u if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else local.get $0 i32.const 4 + i32.shl + local.get $1 i32.add - local.get $0 i32.const 2 - i32.add - local.get $1 - i32.const 1 i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 + i32.const 37600 i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 + i32.store offset=96 local.get $1 + i32.const 1 i32.add local.set $1 + br $for-loop|1 end - local.get $1 - i32.const 2 - i32.add end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end + i32.const 37600 + i32.const 39172 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37600 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $2 - if (result f64) - i32.const 1776 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - else - local.get $0 - end - f32.demote_f64 - i32.reinterpret_f32 - local.tee $7 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $8 - i32.const 1 - local.get $8 - select - i32.const 150 - i32.sub - local.tee $9 - i32.const 1 - i32.sub - local.get $7 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $8 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - local.tee $1 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $3 - i64.clz - i32.wrap_i64 - local.tee $7 - i32.sub - local.set $8 - local.get $3 - local.get $7 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i64.const 8388608 - i64.eq - i32.const 1 + i32.const 19 i32.add - local.tee $7 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $7 - i32.sub - local.get $8 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $8 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp + i32.const -16 + i32.and + i32.const 4 i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_sat_f64_s - local.tee $7 - local.get $7 - f64.convert_i32_s + local.set $1 local.get $0 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $7 - i32.const 3 - i32.shl - local.tee $8 - i32.sub - global.set $~lib/util/number/_K - local.get $8 - i32.const 1832 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $7 - i32.const 1 - i32.shl - i32.const 2528 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $1 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i64.clz - i64.shl - local.tee $1 - i64.const 4294967295 - i64.and - local.set $4 - global.get $~lib/util/number/_frc_pow - local.tee $10 - i64.const 4294967295 - i64.and - local.tee $11 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul local.get $4 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $5 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $12 + i32.const 2 + i32.and local.get $3 - i64.const 32 - i64.shr_u + i32.const 8 + i32.sub local.tee $3 - local.get $11 - i64.mul - local.get $11 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $6 - global.get $~lib/util/number/_frc_minus - local.tee $13 - i64.const 4294967295 - i64.and - local.set $14 - local.get $13 - i64.const 32 - i64.shr_u - local.tee $13 - local.get $11 - i64.mul - local.get $11 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $2 i32.const 1 - i32.shl - i32.const 1776 - i32.add + i32.or + i32.or + i32.store local.get $1 - local.get $10 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $5 - i64.const 32 - i64.shr_u - i64.add + i32.const 0 + i32.store offset=4 local.get $1 - local.get $4 - i64.mul - local.get $5 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add + i32.const 0 + i32.store offset=8 local.get $1 + i32.const 4 + i32.add local.get $3 - i64.mul - local.get $6 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $12 - i64.mul - local.get $6 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $3 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp i32.add - i32.const -64 - i32.sub + local.tee $3 + i32.const 2 + i32.store + local.get $0 local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 - local.get $13 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $14 - i64.mul - local.get $11 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $2 - call $~lib/util/number/genDigits - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $2 - i32.add + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/number/F32#toString (param $0 f32) (result i32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-elementaccess/arr + local.tee $0 if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1632 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.0 + global.get $resolve-elementaccess/buf + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 3568 + call $~lib/rt/itcms/__visit + i32.const 4624 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $1 local.get $1 - f64.sub - f64.const 0 - f64.ne + i32.ne if - i32.const 1664 - local.set $2 - local.get $1 - local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 1696 - i32.const 1744 - local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end + global.get $~lib/rt/itcms/white local.get $1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - i32.const 1776 - local.get $3 - memory.copy + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/number/U8#toString (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2878,116 +2037,25 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa32$79 - local.get $0 - i32.const 255 - i32.and - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3536 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32$79 - end - global.get $~lib/memory/__stack_pointer - i32.const 3 - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $1 - i32.const 100 - i32.ge_u - select - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:resolve-elementaccess - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#set:buffer global.get $~lib/memory/__stack_pointer @@ -3051,366 +2119,1298 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1568 - i32.const 1315 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1568 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + (func $~start + call $start:resolve-elementaccess ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s + local.get $2 + i32.eqz if - i32.const 37632 - i32.const 37680 - i32.const 1 + local.get $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 return end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.shl + i32.add + i32.const 3145774 i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and if (result i32) + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 local.get $2 - i32.const 7 + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 0 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $3 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end + end + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i64) + local.get $1 + local.get $0 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $2 + i32.sub + local.tee $11 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $12 + local.get $1 + i64.and + local.set $8 + local.get $1 + local.get $0 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $2 + i32.const 1000000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 100000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 10000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000 + i32.div_u + local.set $5 + local.get $2 + i32.const 100000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000 + i32.div_u + local.set $5 + local.get $2 + i32.const 10000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100 + i32.div_u + local.set $5 + local.get $2 + i32.const 100 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10 + i32.div_u + local.set $5 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $5 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $5 + end + local.get $4 + local.get $5 + i32.or + if + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.const 1 + i32.shl + i32.const 1776 + i32.add + local.get $5 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $3 + local.get $2 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $8 + i64.add + local.tee $0 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 2704 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 + i32.const 1 + i32.shl + i32.const 1774 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u + local.get $3 + local.get $0 + i64.sub + local.get $1 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $0 + local.get $1 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $0 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + local.get $8 + i64.const 10 + i64.mul + local.tee $0 + local.get $11 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.shl + i32.const 1776 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $0 + local.get $12 + i64.and + local.tee $8 + local.get $3 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 2704 + i32.add + i64.load32_u + i64.mul + local.set $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 1774 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|6 + local.get $0 + local.get $8 + i64.gt_u + local.get $3 + local.get $8 + i64.sub + local.get $10 + i64.ge_u + i32.and + if (result i32) + local.get $0 + local.get $8 + local.get $10 + i64.add + local.tee $1 + i64.gt_u + local.get $0 + local.get $8 + i64.sub + local.get $1 + local.get $0 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $10 + i64.add + local.set $8 + br $while-continue|6 + end + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + ) + (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) + (local $1 i64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + local.get $0 + f64.const 0 + f64.lt + local.tee $2 + if (result f64) + i32.const 1776 + i32.const 45 + i32.store16 + local.get $0 + f64.neg + else + local.get $0 + end + f32.demote_f64 + i32.reinterpret_f32 + local.tee $4 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 150 + i32.sub + local.tee $9 + i32.const 1 + i32.sub + local.get $4 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $8 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add + local.tee $1 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $3 + i64.clz + i32.wrap_i64 + local.tee $8 + i32.sub + local.set $4 + local.get $3 + local.get $8 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $1 + local.get $1 + i64.const 8388608 + i64.eq + i32.const 1 + i32.add + local.tee $8 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $8 + i32.sub + local.get $4 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $4 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $0 + i32.trunc_sat_f64_s + local.tee $4 + local.get $4 + f64.convert_i32_s + local.get $0 + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + local.tee $8 + i32.sub + global.set $~lib/util/number/_K + local.get $8 + i32.const 1832 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $4 + i32.const 1 + i32.shl + i32.const 2528 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $1 + local.get $1 + i64.clz + i64.shl + local.tee $1 + i64.const 4294967295 + i64.and + local.set $5 + global.get $~lib/util/number/_frc_pow + local.tee $10 + i64.const 4294967295 + i64.and + local.tee $11 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $5 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $6 + global.get $~lib/util/number/_frc_plus + local.tee $3 + i64.const 4294967295 + i64.and + local.set $12 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $11 + i64.mul + local.get $11 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_minus + local.tee $13 + i64.const 4294967295 + i64.and + local.set $14 + local.get $13 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $11 + i64.mul + local.get $11 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $2 + i32.const 1 + i32.shl + i32.const 1776 + i32.add + local.get $1 + local.get $10 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $6 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $5 + i64.mul + local.get $6 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $3 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $12 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $3 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $3 + local.get $1 + local.get $13 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $14 + i64.mul + local.get $11 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $2 + call $~lib/util/number/genDigits + local.get $2 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $2 + i32.add + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 37600 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$97 - loop $while-continue|1 + local.get $0 + i32.const 37600 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37600 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$97 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1504 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1568 - i32.const 178 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4832 - i32.lt_s - if - i32.const 37632 - i32.const 37680 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1568 - i32.const 167 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:resolve-elementaccess (local $0 i32) diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat index 82fe5bde30..6837fffa79 100644 --- a/tests/compiler/resolve-function-expression.release.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -4,9 +4,9 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -56,70 +56,6 @@ (elem $0 (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) (export "memory" (memory $0)) (start $~start) - (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) - local.get $0 - i32.const 40 - i32.add - ) - (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) - local.get $0 - i32.const 41 - i32.add - ) - (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) - local.get $0 - i32.const 42 - i32.add - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1648 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 2256 - call $~lib/rt/itcms/__visit - i32.const 3312 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1520 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -664,119 +600,189 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1792 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1792 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - local.get $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1792 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1792 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -858,1225 +864,1220 @@ i32.const 36224 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1792 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1792 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1792 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 1648 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 2256 + call $~lib/rt/itcms/__visit + i32.const 3312 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1520 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + br $while-continue|0 + end + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 2 + i32.const 1056 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and + i32.const 1088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1168 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 36216 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/pinSpace + i32.const 1604 + i32.const 1600 + i32.store + i32.const 1608 + i32.const 1600 + i32.store + i32.const 1600 + global.set $~lib/rt/itcms/toSpace + i32.const 1748 + i32.const 1744 + i32.store + i32.const 1752 + i32.const 1744 + i32.store + i32.const 1744 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 1200 + i32.load + call_indirect (type $0) + call $~lib/number/I32#toString + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + block $__inlined_func$~lib/string/String.__eq$1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $5 + i32.const 3408 i32.eq if global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36216 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/string/String.__eq$1 + end + block $folding-inner0 + local.get $5 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store + local.get $1 + i32.const 3404 + i32.load + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + i32.const 3408 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=4 + i32.const 1 + local.get $5 + i32.const 7 + i32.and + local.get $1 + i32.const 4 + i32.lt_u + select + i32.eqz + if + loop $do-loop|0 + local.get $5 + i64.load + local.get $3 + i64.load + i64.eq + if + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end end end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + block $__inlined_func$~lib/util/string/compareImpl$80 + loop $while-continue|1 local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne if + local.get $5 + i32.load16_u + local.tee $2 + local.get $3 + i32.load16_u + local.tee $0 + i32.sub + local.set $4 local.get $0 local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$80 + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|1 end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 end + i32.const 0 + local.set $4 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.eqz + br $__inlined_func$~lib/string/String.__eq$1 end - global.get $~lib/rt/itcms/visitCount - return + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + i32.eqz if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter + i32.const 0 + i32.const 1088 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.ne - if - i32.const 0 - i32.const 1520 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 36216 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total + local.set $0 + loop $while-continue|1 local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36216 - i32.ge_u + global.get $~lib/rt/itcms/toSpace + i32.ne if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 4 - i32.sub - local.set $2 + global.set $~lib/rt/itcms/iter + local.get $1 local.get $0 - i32.const 15 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else + i32.ne + if + local.get $0 local.get $2 - i32.load - i32.const 1 + i32.const -4 i32.and - end - if + local.get $1 + i32.or + i32.store offset=4 i32.const 0 - i32.const 1792 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1792 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 - local.tee $2 - i32.eqz + i32.const -4 + i32.and + i32.eq if - i32.const 0 - i32.const 1792 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3448 - i32.lt_s - if - i32.const 36240 - i32.const 36288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32$73 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1424 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - select - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36216 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white local.get $0 - i32.const 1000 - i32.ge_u - i32.add + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - else + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.const 10000000 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36216 i32.lt_u - if (result i32) + if local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 else + global.get $~lib/rt/itcms/total local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - i32.const 100000000 - i32.ge_u + i32.const 4 i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - local.tee $6 - i32.const 1073741804 - i32.ge_u - if - i32.const 1456 - i32.const 1520 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state + local.tee $0 + i32.const 36216 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT i32.eqz if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 + call $~lib/rt/tlsf/initialize end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $7 - local.get $6 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1792 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $8 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $8 - i32.const 256 - i32.ge_u - if (result i32) - local.get $8 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $8 - i32.const 1 - i32.const 27 - local.get $8 - i32.clz + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - i32.shl - i32.add + local.set $2 + local.get $0 + i32.const 15 + i32.and i32.const 1 - i32.sub - else - local.get $8 - end - else - local.get $8 - end - i32.const 4 - local.get $7 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $4 - local.get $2 - local.get $4 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1792 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - local.get $7 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $7 - local.get $8 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1792 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $8 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1792 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $9 - local.get $8 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1792 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.const 10 + return end - local.get $9 - i32.const -4 - i32.and - local.get $8 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3448 + i32.lt_s + if + i32.const 36240 + i32.const 36288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + local.get $0 + i32.eqz if - local.get $2 - local.get $8 - local.get $9 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $8 - i32.add - local.tee $8 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $7 - local.get $8 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $9 - i32.const -2 - i32.and - i32.store - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - local.get $4 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/memory/__stack_pointer + i32.const 1424 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 end - local.get $2 - i32.const 2 - i32.store offset=12 - local.get $2 - local.get $6 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $4 - i32.load offset=8 - local.set $7 - local.get $2 - local.get $4 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $7 - i32.store offset=8 - local.get $7 - local.get $2 - local.get $7 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $6 - memory.fill - local.get $2 - i32.store - local.get $2 - local.get $3 - i32.add - local.set $4 - loop $while-continue|0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) local.get $0 - i32.const 10000 - i32.ge_u - if + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else local.get $0 i32.const 10000 - i32.rem_u - local.set $5 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $4 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl + i32.const 1000000 + i32.ge_u + i32.const 6 i32.add - local.get $5 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1836 + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 i32.add - i64.load32_u - local.get $5 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1836 + local.get $0 + i32.const 100000000 + i32.ge_u i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 end end - local.get $0 - i32.const 100 + local.tee $1 + i32.const 1 + i32.shl + local.get $3 + i32.add + local.tee $6 + i32.const 1073741804 i32.ge_u if - local.get $4 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1836 - i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 + i32.const 1456 + i32.const 1520 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 10 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold i32.ge_u if - local.get $4 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $7 + local.get $6 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1792 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $0 - i32.const 2 + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $8 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $8 + i32.const 256 + i32.ge_u + if (result i32) + local.get $8 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $8 + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $8 + end + else + local.get $8 + end + i32.const 4 + local.get $7 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 i32.shl - i32.const 1836 - i32.add - i32.load - i32.store - else - local.get $4 - local.get $1 - i32.const 1 + i32.const 4 i32.sub - i32.const 1 + i32.ne i32.shl i32.add - local.get $0 - i32.const 48 + i32.const 65535 i32.add - i32.store16 - end - local.get $3 - if + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $4 local.get $2 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $2 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid - end - return - end - return + local.get $4 + local.get $2 + local.get $4 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable end - return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + local.get $7 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $7 + local.get $8 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3448 - i32.lt_s + local.get $8 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if - i32.const 36240 - i32.const 36288 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1792 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $9 + local.get $8 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 3448 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 2 - i32.const 1056 - i32.load - call_indirect (type $0) - i32.const 42 - i32.ne + i32.const 15 + i32.and if i32.const 0 - i32.const 1088 - i32.const 1 - i32.const 1 + i32.const 1792 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1168 - i32.load - call_indirect (type $0) - i32.const 42 - i32.ne + local.get $9 + i32.const -4 + i32.and + local.get $8 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u if - i32.const 0 - i32.const 1088 - i32.const 6 + local.get $2 + local.get $8 + local.get $9 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $8 + i32.add + local.tee $8 + local.get $4 + i32.const 4 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.or + i32.store + local.get $7 + local.get $8 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $9 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + local.get $4 + i32.load + i32.const -3 + i32.and + i32.store end - memory.size - i32.const 16 - i32.shl - i32.const 36216 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1572 - i32.const 1568 - i32.store - i32.const 1576 - i32.const 1568 - i32.store - i32.const 1568 - global.set $~lib/rt/itcms/pinSpace - i32.const 1604 - i32.const 1600 - i32.store - i32.const 1608 - i32.const 1600 - i32.store - i32.const 1600 - global.set $~lib/rt/itcms/toSpace - i32.const 1748 - i32.const 1744 - i32.store - i32.const 1752 - i32.const 1744 - i32.store - i32.const 1744 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - i32.const 1200 + local.get $2 + i32.const 2 + i32.store offset=12 + local.get $2 + local.get $6 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $4 + i32.load offset=8 + local.set $7 + local.get $2 + local.get $4 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $7 + i32.store offset=8 + local.get $7 + local.get $2 + local.get $7 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $4 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load - call_indirect (type $0) - call $~lib/number/I32#toString - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - block $__inlined_func$~lib/string/String.__eq$1 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3448 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $5 - i32.const 3408 - i32.eq + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $2 + i32.const 0 + local.get $6 + memory.fill + local.get $2 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $4 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - br $__inlined_func$~lib/string/String.__eq$1 - end - block $folding-inner0 - local.get $5 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store + local.get $0 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $4 local.get $1 - i32.const 3404 - i32.load + i32.const 4 + i32.sub + local.tee $1 i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.shl + i32.add local.get $5 - i32.store - i32.const 3408 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store offset=4 - i32.const 1 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i64.load32_u local.get $5 - i32.const 7 - i32.and - local.get $1 - i32.const 4 - i32.lt_u - select - i32.eqz - if - loop $do-loop|0 - local.get $5 - i64.load - local.get $3 - i64.load - i64.eq - if - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$80 - loop $while-continue|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $0 - if - local.get $5 - i32.load16_u - local.tee $2 - local.get $3 - i32.load16_u - local.tee $0 - i32.sub - local.set $4 - local.get $0 - local.get $2 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$80 - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|1 - end - end - i32.const 0 - local.set $4 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.eqz - br $__inlined_func$~lib/string/String.__eq$1 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 + end + local.get $0 + i32.const 100 + i32.ge_u + if + local.get $4 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 end - i32.eqz + local.get $0 + i32.const 10 + i32.ge_u if - i32.const 0 - i32.const 1088 - i32.const 11 + local.get $4 + local.get $1 + i32.const 2 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1836 + i32.add + i32.load + i32.store + else + local.get $4 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end + local.get $3 + if + local.get $2 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - return end - i32.const 36240 - i32.const 36288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 + ) + (func $start:resolve-function-expression~anonymous|2 (param $0 i32) (result i32) + local.get $0 + i32.const 42 + i32.add + ) + (func $start:resolve-function-expression~anonymous|1 (param $0 i32) (result i32) + local.get $0 + i32.const 41 + i32.add + ) + (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 40 + i32.add ) ) diff --git a/tests/compiler/resolve-new.release.wat b/tests/compiler/resolve-new.release.wat index 2a19017969..ac44b8fd07 100644 --- a/tests/compiler/resolve-new.release.wat +++ b/tests/compiler/resolve-new.release.wat @@ -2,8 +2,8 @@ (type $0 (func)) (type $1 (func (param i32))) (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) - (type $4 (func (param i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -33,57 +33,6 @@ (data $8 (i32.const 1440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-new/foo - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -628,6 +577,171 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -742,435 +856,89 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $resolve-new/foo + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34240 - i32.const 35812 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34240 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34232 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34232 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34232 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + i32.gt_s + br_if $do-loop|0 end global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/total @@ -1195,12 +963,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1213,7 +980,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -1368,103 +1137,11 @@ memory.fill local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-new/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start + (func $resolve-new/Foo#constructor (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1464 - i32.lt_s - if - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 34232 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $resolve-new/Foo#constructor - global.set $resolve-new/foo - call $resolve-new/Foo#constructor - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $resolve-new/Foo#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1524,4 +1201,328 @@ call $~lib/builtins/abort unreachable ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + if + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 34232 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $resolve-new/Foo#constructor + global.set $resolve-new/foo + call $resolve-new/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34232 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34232 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) ) diff --git a/tests/compiler/resolve-propertyaccess.release.wat b/tests/compiler/resolve-propertyaccess.release.wat index 9ac4eb9778..fc8a3c80bd 100644 --- a/tests/compiler/resolve-propertyaccess.release.wat +++ b/tests/compiler/resolve-propertyaccess.release.wat @@ -4,9 +4,9 @@ (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -70,531 +70,608 @@ (data $27 (i32.const 3680) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 2080 - call $~lib/rt/itcms/__visit - i32.const 3136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3704 + i32.lt_s if - return + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$126 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 36472 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$126 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 3680 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1536 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 3684 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + i32.store local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) local.get $3 + local.tee $0 i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$77 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$77 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3704 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 203 - i32.const 14 + i32.const 36496 + i32.const 36544 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 i32.sub - i32.load + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz + i32.shl + local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 + i32.ge_u if - i32.const 0 - i32.const 1616 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 end local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add + i32.const 10 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $5 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end local.get $3 - i32.const -4 - i32.and + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $3 - i32.store + global.set $~lib/memory/__stack_pointer end - local.get $4 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $4 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$126 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 36472 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$126 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 3680 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 3684 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1616 - i32.const 234 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -602,520 +679,665 @@ if i32.const 0 i32.const 1616 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 + (local $6 i32) local.get $1 - i64.extend_i32_u - i64.lt_u + i32.eqz if i32.const 0 i32.const 1616 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1616 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 36480 - i32.const 0 - i32.store - i32.const 38048 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 36480 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36480 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 + global.get $~lib/rt/itcms/total i32.const 1 + i32.shl + i32.const 1024 i32.add - local.set $1 - br $for-loop|1 + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 1 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl i32.add - local.set $0 - br $for-loop|0 + global.set $~lib/rt/itcms/threshold end end - i32.const 36480 - i32.const 38052 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36480 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1280 + i32.const 1616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36472 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 end - global.get $~lib/rt/itcms/visitCount - return + else + local.get $5 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne + local.get $3 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 36472 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36472 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-propertyaccess/Class + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + end + return end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + return end + return end - i32.const 10 + local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + return end - i32.const 0 + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1171,805 +1393,584 @@ i32.eqz if i32.const 0 - i32.const 1616 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1280 - i32.const 1344 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1280 - i32.const 1616 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz local.get $2 - i32.const 16 - i32.shl i32.const 4 - i32.sub - i32.ne i32.shl i32.add - i32.const 65535 + i32.const 2 + i32.shl i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort unreachable end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1616 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable end end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow i32.const 0 - i32.const 1616 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort + i32.lt_s + else + i32.const 0 + end + if unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock + i32.const 36480 + i32.const 0 + i32.store + i32.const 38048 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36480 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36480 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36480 + i32.const 38052 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36480 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1616 - i32.const 361 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $5 + i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 local.tee $3 - i32.const 16 - i32.ge_u if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 + local.get $3 i32.const 4 i32.add - local.get $5 - i32.add - local.tee $5 + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + i32.const 1572 i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 local.get $1 - local.get $2 + i32.const 0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $1 i32.const 4 i32.add + local.get $3 i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 local.get $0 - memory.fill local.get $1 - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3704 - i32.lt_s - if - i32.const 36496 - i32.const 36544 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32$73 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - select - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $3 - i32.add - local.set $5 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2080 + call $~lib/rt/itcms/__visit + i32.const 3136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 100 - i32.ge_u + local.get $1 + i32.ne if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store local.get $0 - i32.const 100 - i32.div_u - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - else - local.get $5 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + i32.const 20 i32.add + call $~lib/rt/__visit_members local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $3 - if - local.get $2 - i32.const 45 - i32.store16 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer end - local.get $2 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-propertyaccess/Class - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object + (func $~start + call $start:resolve-propertyaccess + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36472 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - return + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end - return end - return + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/visitCount return end - return - end - unreachable - ) - (func $~start - call $start:resolve-propertyaccess - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3704 - i32.lt_s - if - i32.const 36496 - i32.const 36544 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$77 - loop $while-continue|1 + local.get $0 + i32.const 36472 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36472 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$77 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:resolve-propertyaccess diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index 91b5b3d064..d6ff759cbd 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 i32))) - (type $9 (func (param i64 i64 i32 i64) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (param i64 i64 i32 i64) (result i32))) + (type $9 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -76,55 +76,6 @@ (elem $0 (i32.const 1) $start:resolve-ternary~anonymous|0 $start:resolve-ternary~anonymous|1 $resolve-ternary/g1 $resolve-ternary/g2) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 2080 - call $~lib/rt/itcms/__visit - i32.const 3136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -277,6 +228,110 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -669,461 +724,225 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + if + i32.const 37424 + i32.const 37472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 382 - i32.const 14 + i32.const 37424 + i32.const 37472 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=1568 - local.tee $3 + local.get $1 + i32.eq if - local.get $3 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 local.get $1 - i32.const 16 + i32.const 20 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1572 - i32.add + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 37408 - i32.const 0 - i32.store - i32.const 38976 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + i32.eqz if - local.get $0 - i32.const 2 - i32.shl - i32.const 37408 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + loop $do-loop|0 + local.get $2 + i64.load local.get $1 - i32.const 16 - i32.lt_u + i64.load + i64.eq if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 - i32.shl + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$84 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 local.get $1 - i32.add + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$84 + local.get $2 i32.const 2 - i32.shl - i32.const 37408 i32.add - i32.const 0 - i32.store offset=96 + local.set $2 local.get $1 - i32.const 1 + i32.const 2 i32.add local.set $1 - br $for-loop|1 + br $while-continue|1 end end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end - i32.const 37408 - i32.const 38980 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 37408 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 37400 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 37400 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 37400 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 256 @@ -1251,12 +1070,255 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37408 + i32.const 0 + i32.store + i32.const 38976 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37408 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37408 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37408 + i32.const 38980 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37408 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2080 + call $~lib/rt/itcms/__visit + i32.const 3136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1349,8 +1411,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $4 i32.const 256 i32.ge_u @@ -1378,7 +1438,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1392,7 +1453,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s @@ -1564,531 +1627,295 @@ memory.fill local.get $1 ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 + (func $~start + (local $0 i64) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 37400 i32.sub - local.tee $2 i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1396 + i32.const 1392 i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/toSpace + i32.const 1572 + i32.const 1568 + i32.store + i32.const 1576 + i32.const 1568 + i32.store + i32.const 1568 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 2 - i32.shl - i32.const 1660 - i32.add - i32.load + call $~lib/rt/itcms/__new + local.tee $1 i32.store - else - local.get $0 - local.get $2 + local.get $1 i32.const 1 - i32.sub i32.const 1 - i32.shl + call $~lib/util/number/utoa32_dec_lut + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - local.get $1 - local.get $0 - i64.sub - local.set $8 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $9 - i64.const 1 - i64.sub - local.tee $11 - local.get $1 - i64.and - local.set $7 - local.get $1 - local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u + i32.store + local.get $1 + i32.const 3232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 3264 + i32.const 5 i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $5 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add + call $~lib/builtins/abort + unreachable end - end - local.set $6 - loop $while-continue|0 - local.get $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4632 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $6 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $5 - i32.const 1000000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $2 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $2 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $2 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $2 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $2 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $2 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $2 - end - local.get $2 - local.get $4 - i32.or - if - local.get $4 - i32.const 1 - i32.shl - i32.const 3472 - i32.add - local.get $2 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $4 - i32.const 1 - i32.add - local.set $4 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $7 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $6 - i32.add - global.set $~lib/util/number/_K - local.get $6 - i32.const 2 - i32.shl - i32.const 4400 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 3470 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|3 - local.get $0 - local.get $8 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $1 - i64.ge_u - i32.and - if (result i32) - local.get $8 - local.get $0 - local.get $1 - i64.add - local.tee $7 - i64.gt_u - local.get $8 - local.get $0 - i64.sub - local.get $7 - local.get $8 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $1 - i64.add - local.set $0 - br $while-continue|3 - end - end - local.get $5 - local.get $2 - i32.store16 - local.get $4 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 + i32.store + i32.const -4 + global.set $~lib/util/number/_K + i32.const 3880 + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 4312 + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $2 + i64.const 4294967295 + i64.and + local.tee $3 + i64.const 31 + i64.shl + local.set $0 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + i64.const 31 + i64.shl + local.get $3 + i64.const 31 + i64.shl local.get $3 i64.const 10 - i64.mul - local.set $3 - local.get $7 + i64.shl + i64.const 32 + i64.shr_u + i64.add + local.tee $4 + i64.const 32 + i64.shr_u + i64.add + local.get $4 + i64.const 4294967295 + i64.and + local.get $2 i64.const 10 + i64.shl + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i64.const 31 + i64.shl + local.get $0 + i64.const 32 + i64.shr_u + i64.add + local.get $0 + i64.const 4294967295 + i64.and + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $4 + global.get $~lib/util/number/_exp_pow + i32.const 1 + i32.add + local.get $4 + local.get $2 + i64.const 2147483647 + i64.mul + local.get $3 + i64.const 2147483647 i64.mul + local.get $3 + i64.const 4294966784 + i64.mul + i64.const 32 + i64.shr_u + i64.add local.tee $0 - local.get $10 - i64.extend_i32_s + i64.const 32 i64.shr_u + i64.add + local.get $2 + i64.const 4294966784 + i64.mul + local.get $0 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + call $~lib/util/number/genDigits + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + i32.const 1 + i32.shl + local.tee $5 + call $~lib/rt/itcms/__new local.tee $1 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + i32.store + local.get $1 + i32.const 3472 + local.get $5 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 4464 + call $~lib/string/String.__eq + i32.eqz if - local.get $4 + i32.const 0 + i32.const 3264 + i32.const 13 i32.const 1 - i32.shl - i32.const 3472 - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $4 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 4496 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 3264 + i32.const 24 i32.const 1 - i32.add - local.set $4 + call $~lib/builtins/abort + unreachable end - local.get $6 i32.const 1 - i32.sub - local.set $6 - local.get $0 - local.get $11 - i64.and - local.tee $7 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $6 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 0 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.const 4400 - i32.add - i64.load32_u - i64.mul - local.set $0 - local.get $4 - i32.const 1 - i32.shl - i32.const 3470 - i32.add - local.tee $5 - i32.load16_u - local.set $2 - loop $while-continue|6 - local.get $0 - local.get $7 - i64.gt_u - local.get $3 - local.get $7 - i64.sub - local.get $9 - i64.ge_u - i32.and - if (result i32) - local.get $0 - local.get $7 - i64.sub - local.get $7 - local.get $9 - i64.add - local.tee $1 - local.get $0 - i64.sub - i64.gt_u - local.get $0 - local.get $1 - i64.gt_u - i32.or - else + i32.const 4560 + i32.load + call_indirect (type $0) + i32.const 4 + i32.ne + if i32.const 0 + i32.const 3264 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 1 + i32.const 4528 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne if - local.get $2 + i32.const 0 + i32.const 3264 + i32.const 43 i32.const 1 - i32.sub - local.set $2 - local.get $7 - local.get $9 - i64.add - local.set $7 - br $while-continue|6 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $5 - local.get $2 - i32.store16 - local.get $4 + i32.const 37424 + i32.const 37472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2411,525 +2238,699 @@ end end ) - (func $start:resolve-ternary~anonymous|0 (param $0 i32) (result i32) - i32.const 2 - ) - (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) - i32.const 3 - ) - (func $resolve-ternary/g1 (param $0 i32) (result i32) - i32.const 4 - ) - (func $resolve-ternary/g2 (param $0 i32) (result i32) - i32.const 5 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4632 - i32.lt_s - if - i32.const 37424 - i32.const 37472 - i32.const 1 + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + local.get $1 + local.get $0 + i64.sub + local.set $8 + i64.const 1 + i32.const 0 + local.get $2 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $9 + i64.const 1 + i64.sub + local.tee $11 + local.get $1 + i64.and + local.set $7 + local.get $1 + local.get $0 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 100 + i32.lt_u + if (result i32) + local.get $5 + i32.const 10 + i32.ge_u i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + else + local.get $5 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $5 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $5 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $5 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $5 + i32.const 100000000 + i32.ge_u + i32.add end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i64) - (local $2 f64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 4632 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 37400 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/pinSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/itcms/toSpace - i32.const 1572 - i32.const 1568 - i32.store - i32.const 1576 - i32.const 1568 - i32.store - i32.const 1568 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4632 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + local.set $2 + loop $while-continue|0 + local.get $2 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 1 - i32.const 1 - call $~lib/util/number/utoa32_dec_lut - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3232 - call $~lib/string/String.__eq - i32.eqz + i32.gt_s if - i32.const 0 - i32.const 3264 - i32.const 5 + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $2 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $5 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 100000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100000 + i32.div_u + local.set $6 + local.get $5 + i32.const 100000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 1000 + i32.div_u + local.set $6 + local.get $5 + i32.const 1000 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + i32.const 10 + i32.div_u + local.set $6 + local.get $5 + i32.const 10 + i32.rem_u + local.set $5 + br $break|1 + end + local.get $5 + local.set $6 + i32.const 0 + local.set $5 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $4 + local.get $6 + i32.or + if + local.get $4 + i32.const 1 + i32.shl + i32.const 3472 + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $4 + i32.const 1 + i32.add + local.set $4 + end + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $2 + local.get $3 + local.get $5 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $7 + i64.add + local.tee $0 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $2 + i32.add + global.set $~lib/util/number/_K + local.get $2 + i32.const 2 + i32.shl + i32.const 4400 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 + i32.const 1 + i32.shl + i32.const 3470 + i32.add + local.tee $5 + i32.load16_u + local.set $2 + loop $while-continue|3 + local.get $0 + local.get $8 + i64.lt_u + local.get $3 + local.get $0 + i64.sub + local.get $1 + i64.ge_u + i32.and + if (result i32) + local.get $8 + local.get $0 + local.get $1 + i64.add + local.tee $7 + i64.gt_u + local.get $8 + local.get $0 + i64.sub + local.get $7 + local.get $8 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $5 + local.get $2 + i32.store16 + local.get $4 + return + end + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4632 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const -4 - global.set $~lib/util/number/_K - i32.const 3880 - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 4312 - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $3 - i64.const 4294967295 - i64.and - local.tee $4 - i64.const 31 - i64.shl - local.get $4 - i64.const 10 - i64.shl - i64.const 32 - i64.shr_u - i64.add - local.set $1 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - i64.const 31 - i64.shl - local.get $4 - i64.const 31 - i64.shl - local.tee $5 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - i64.const 4294967295 - i64.and - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 31 - i64.shl - local.get $1 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - i64.const 4294967295 - i64.and + end + loop $while-continue|4 local.get $3 i64.const 10 - i64.shl - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $1 - global.get $~lib/util/number/_exp_pow - i32.const 1 - i32.add - local.get $1 - local.get $3 - i64.const 2147483647 i64.mul - local.get $4 - i64.const 2147483647 - i64.mul - local.get $4 - i64.const 4294966784 + local.set $3 + local.get $7 + i64.const 10 i64.mul - i64.const 32 + local.tee $0 + local.get $10 + i64.extend_i32_s i64.shr_u - i64.add local.tee $1 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - i64.const 4294966784 - i64.mul - local.get $1 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - call $~lib/util/number/genDigits - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 3472 - local.get $6 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4464 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 3264 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 4496 - i32.load - call_indirect (type $0) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 3264 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 4560 - i32.load - call_indirect (type $0) - i32.const 4 - i32.ne + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne if - i32.const 0 - i32.const 3264 - i32.const 35 + local.get $4 + local.tee $5 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 4528 - i32.load - call_indirect (type $0) - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 3264 - i32.const 43 + i32.add + local.set $4 + local.get $5 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.const 3472 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 37424 - i32.const 37472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4632 - i32.lt_s - if - i32.const 37424 - i32.const 37472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + local.get $2 i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.set $2 local.get $0 - i32.store + local.get $11 + i64.and + local.tee $7 + local.get $3 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $2 + i32.add + global.set $~lib/util/number/_K + local.get $8 + i32.const 0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.const 4400 + i32.add + i64.load32_u + i64.mul + local.set $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 3470 + i32.add + local.tee $5 + i32.load16_u + local.set $2 + loop $while-continue|6 local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $7 + i64.gt_u local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u + local.get $7 + i64.sub + local.get $9 + i64.ge_u + i32.and if (result i32) + local.get $0 + local.get $7 + i64.sub + local.get $7 + local.get $9 + i64.add + local.tee $1 + local.get $0 + i64.sub + i64.gt_u + local.get $0 + local.get $1 + i64.gt_u + i32.or + else + i32.const 0 + end + if local.get $2 - i32.const 7 + i32.const 1 + i32.sub + local.set $2 + local.get $7 + local.get $9 + i64.add + local.set $7 + br $while-continue|6 + end + end + local.get $5 + local.get $2 + i32.store16 + local.get $4 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - local.get $1 - i32.const 7 + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + i32.const 37400 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - block $__inlined_func$~lib/util/string/compareImpl$84 - loop $while-continue|1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 37400 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 37400 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$84 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) + i32.const 3 + ) + (func $start:resolve-ternary~anonymous|0 (param $0 i32) (result i32) + i32.const 2 + ) + (func $resolve-ternary/g2 (param $0 i32) (result i32) + i32.const 5 + ) + (func $resolve-ternary/g1 (param $0 i32) (result i32) + i32.const 4 + ) ) diff --git a/tests/compiler/resolve-unary.release.wat b/tests/compiler/resolve-unary.release.wat index b2115a2271..a407109355 100644 --- a/tests/compiler/resolve-unary.release.wat +++ b/tests/compiler/resolve-unary.release.wat @@ -2,8 +2,8 @@ (type $0 (func)) (type $1 (func (param i32 i32) (result i32))) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) (type $7 (func (result i32))) @@ -84,66 +84,167 @@ (data $32 (i32.const 3840) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $resolve-unary/foo - local.tee $0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $resolve-unary/bar - local.tee $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - local.get $0 - call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 2080 - call $~lib/rt/itcms/__visit - i32.const 3136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$79 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$79 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -297,897 +398,605 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 268 - i32.const 14 + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1616 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else + local.get $0 + i32.sub + local.get $0 + local.get $0 i32.const 31 - i32.const 1073741820 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 local.get $3 - i32.const 1073741820 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + i32.const 100 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + local.get $0 + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1660 + i32.add + i32.load + i32.store + else + local.get $5 + local.get $1 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 + end local.get $3 - local.get $4 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.add + global.set $~lib/memory/__stack_pointer end - local.tee $3 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1616 - i32.const 284 - i32.const 14 + i32.const 1280 + i32.const 1344 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1280 i32.const 1616 - i32.const 203 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1616 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1616 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1616 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 36640 - i32.const 0 - i32.store - i32.const 38208 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 36640 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36640 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 36640 - i32.const 38212 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36640 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 36640 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 36640 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 36640 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + unreachable + end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 256 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 i32.lt_u if - local.get $1 + i32.const 0 + i32.const 1616 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1198,685 +1007,772 @@ if i32.const 0 i32.const 1616 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.get $1 + i32.eqz if - i32.const 1280 - i32.const 1344 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1280 + i32.const 0 i32.const 1616 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 + local.get $0 local.get $4 - i32.load offset=1568 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add local.get $2 - i32.const 16 - i32.shl + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub - i32.ne - i32.shl i32.add - i32.const 65535 + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - i32.const -65536 + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1616 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1616 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1616 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 local.get $2 + local.get $3 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>void> + block $resolve-unary/Bar + block $resolve-unary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.const 1 - i32.or + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.lt_s + if + i32.const 36672 + i32.const 36720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 i32.const 4 - i32.add + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 7 + i32.sub + local.set $2 end - local.get $2 local.get $1 - i32.store offset=12 + i32.const 16 + i32.lt_u local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 local.get $2 - local.get $3 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.const -1 local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 + i32.shl i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.lt_s - if - i32.const 36672 - i32.const 36720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32$73 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 + if (result i32) local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - select - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 i32.shl - local.get $3 i32.add i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 local.get $2 - local.get $3 + i32.const 1 i32.add - local.set $5 - loop $while-continue|0 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 10000 - i32.ge_u + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1660 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - i32.const 100 - i32.ge_u - if - local.get $5 + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 + i32.const 4 i32.shl i32.add - local.get $0 - i32.const 100 - i32.rem_u i32.const 2 i32.shl - i32.const 1660 i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 + i32.load offset=96 + else + i32.const 0 end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36640 + i32.const 0 + i32.store + i32.const 38208 + i32.const 0 + i32.store + loop $for-loop|0 local.get $0 - i32.const 10 - i32.ge_u + i32.const 23 + i32.lt_u if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add local.get $0 i32.const 2 i32.shl - i32.const 1660 - i32.add - i32.load - i32.store - else - local.get $5 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl + i32.const 36640 i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36640 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end local.get $0 - i32.const 48 + i32.const 1 i32.add - i32.store16 + local.set $0 + br $for-loop|0 end + end + i32.const 36640 + i32.const 38212 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36640 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if local.get $3 - if - local.get $2 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $2 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/function/Function<%28%29=>void> - block $resolve-unary/Bar - block $resolve-unary/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $~lib/function/Function<%28%29=>void> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + local.get $1 + i32.const 16 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.lt_s + local.tee $5 + i32.eq if - i32.const 36672 - i32.const 36720 - i32.const 1 - i32.const 1 + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $resolve-unary/foo + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $resolve-unary/bar + local.tee $0 + if local.get $0 - i32.load offset=4 call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - unreachable - ) - (func $~start - call $start:resolve-unary + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2080 + call $~lib/rt/itcms/__visit + i32.const 3136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1891,145 +1787,285 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store local.get $0 - local.get $1 - i32.eq + i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~start + call $start:resolve-unary + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36640 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 7 + i32.const 3 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/util/string/compareImpl$79 - loop $while-continue|1 + local.get $0 + i32.const 36640 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36640 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$79 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:resolve-unary @@ -2597,39 +2633,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/object/Object#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.lt_s - if - i32.const 36672 - i32.const 36720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/return-unreachable.release.wat b/tests/compiler/return-unreachable.release.wat index df64ee697c..85d8930589 100644 --- a/tests/compiler/return-unreachable.release.wat +++ b/tests/compiler/return-unreachable.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32 i32))) + (type $2 (func)) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -38,185 +38,6 @@ (export "test" (func $return-unreachable/test)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1344 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1152 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$121 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34328 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$121 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1536 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -633,585 +454,560 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1488 - i32.const 389 - i32.const 16 + i32.const 1216 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$121 local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - i32.const 0 - i32.const 1488 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34328 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$121 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and end - local.get $1 - local.get $4 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 + local.get $0 local.get $1 - i32.const 0 i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - memory.grow - i32.const 0 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1560 i32.lt_s - else + if + i32.const 34352 + i32.const 34400 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - unreachable - end - i32.const 34336 - i32.const 0 - i32.store - i32.const 35904 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 i32.lt_u if - local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl - i32.const 34336 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34336 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $1 end - end - i32.const 34336 - i32.const 35908 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34336 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34328 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34328 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34328 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1488 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - i32.const 10 - return + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.const 4 - i32.shr_u - local.set $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $1 - i32.const 536870910 + i32.const 0 + end + if + unreachable + end + i32.const 34336 + i32.const 0 + i32.store + i32.const 35904 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 i32.lt_u if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub + local.get $0 + i32.const 2 i32.shl + i32.const 34336 i32.add - i32.const 1 - i32.sub + i32.const 0 + i32.store offset=4 + i32.const 0 local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34336 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 - i32.const 16 - i32.lt_u + i32.const 34336 + i32.const 35908 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34336 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1488 - i32.const 334 + i32.const 382 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 i32.const 2 - i32.shl + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1488 - i32.const 347 - i32.const 18 + i32.const 1216 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1313,8 +1109,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1342,7 +1136,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1356,7 +1151,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1544,44 +1341,338 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34328 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - i32.const 20 - i32.sub i32.load offset=4 - i32.const 3 + local.tee $1 + i32.const -4 i32.and - local.tee $0 + global.set $~lib/rt/itcms/iter global.get $~lib/rt/itcms/white i32.eqz - i32.eq + local.get $1 + i32.const 3 + i32.and + i32.ne if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34328 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq + global.get $~lib/rt/itcms/total local.get $0 - i32.const 3 - i32.eq + i32.load + i32.const -4 i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34328 + i32.ge_u if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 ) (func $return-unreachable/test (param $0 i32) (result i32) (local $1 i32) @@ -1691,94 +1782,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1560 - i32.lt_s - if - i32.const 34352 - i32.const 34400 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34328 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/pinSpace - i32.const 1300 - i32.const 1296 - i32.store - i32.const 1304 - i32.const 1296 - i32.store - i32.const 1296 - global.set $~lib/rt/itcms/toSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/fromSpace - ) ) diff --git a/tests/compiler/return.release.wat b/tests/compiler/return.release.wat index 4509ebf226..6bc1ea50aa 100644 --- a/tests/compiler/return.release.wat +++ b/tests/compiler/return.release.wat @@ -1,7 +1,7 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32))) (type $3 (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) @@ -14,10 +14,6 @@ (export "memory" (memory $0)) (export "testVoidReturnFunction" (func $export:return/testVoidReturnFunction)) (start $~start) - (func $start:return~anonymous|0 - ) - (func $return/testVoidReturn (param $0 i32) - ) (func $~start global.get $~lib/memory/__stack_pointer i32.const 4 @@ -48,6 +44,10 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $start:return~anonymous|0 + ) + (func $return/testVoidReturn (param $0 i32) + ) (func $export:return/testVoidReturnFunction (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/rt/alloc-large-memory.release.wat b/tests/compiler/rt/alloc-large-memory.release.wat index 7430833f99..05d01619c0 100644 --- a/tests/compiler/rt/alloc-large-memory.release.wat +++ b/tests/compiler/rt/alloc-large-memory.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func (param i32 i32))) (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32 i64))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32 i64))) (type $4 (func (param i32))) (type $5 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -160,6 +160,134 @@ end end ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -520,134 +648,6 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/memory/heap.alloc (param $0 i32) (local $1 i32) (local $2 i32) @@ -766,8 +766,6 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 local.get $0 i32.const 256 i32.ge_u @@ -795,7 +793,8 @@ i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -809,7 +808,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s diff --git a/tests/compiler/rt/finalize.release.wat b/tests/compiler/rt/finalize.release.wat index 5d8331afd3..8dbd26236c 100644 --- a/tests/compiler/rt/finalize.release.wat +++ b/tests/compiler/rt/finalize.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $rt/finalize/expect (mut i32) (i32.const 0)) (global $rt/finalize/ran (mut i32) (i32.const 0)) @@ -37,133 +37,363 @@ (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$112 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34280 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1120 - i32.const 132 - i32.const 16 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + global.get $rt/finalize/expect + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $rt/finalize/ran + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$112 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$112 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 i32.load offset=4 i32.const 3 i32.and @@ -626,119 +856,90 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/finalize/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -788,367 +989,194 @@ local.get $0 i32.const 4 i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34288 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34288 - i32.const 35860 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34288 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - global.get $rt/finalize/expect - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $rt/finalize/ran - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34280 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.add + local.set $1 + br $for-loop|1 end end - i32.const 10 - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + i32.const 34288 + i32.const 35860 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $1 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1208,12 +1236,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1226,7 +1253,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -1381,34 +1410,6 @@ memory.fill local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $rt/finalize/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) diff --git a/tests/compiler/rt/flags.release.wat b/tests/compiler/rt/flags.release.wat index c0b2f9cf66..5935c9e5e9 100644 --- a/tests/compiler/rt/flags.release.wat +++ b/tests/compiler/rt/flags.release.wat @@ -1,7 +1,7 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data $0 (i32.const 1036) "<") @@ -33,6 +33,9 @@ i32.add i32.load ) + (func $~start + call $start:rt/flags + ) (func $start:rt/flags block $folding-inner0 i32.const 4 @@ -284,7 +287,4 @@ call $~lib/builtins/abort unreachable ) - (func $~start - call $start:rt/flags - ) ) diff --git a/tests/compiler/rt/issue-2719.release.wat b/tests/compiler/rt/issue-2719.release.wat index 0665cfc0ef..82735386cb 100644 --- a/tests/compiler/rt/issue-2719.release.wat +++ b/tests/compiler/rt/issue-2719.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -34,132 +34,347 @@ (data $9 (i32.const 1504) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$119 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34296 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34296 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1120 - i32.const 132 - i32.const 16 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 + i32.const 34296 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34296 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$119 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34296 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$119 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 local.get $2 i32.load offset=4 i32.const 3 @@ -623,459 +838,105 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/issue-2719/issue2719_T + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 + unreachable + ) + (func $rt/issue-2719/issue2719_T#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1528 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1528 i32.lt_s - else + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - end - if - unreachable - end - i32.const 34304 - i32.const 0 - i32.store - i32.const 35872 - i32.const 0 - i32.store - loop $for-loop|0 + i32.store local.get $0 - i32.const 23 - i32.lt_u + i32.eqz if - local.get $0 - i32.const 2 - i32.shl - i32.const 34304 - i32.add + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34304 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34304 - i32.const 35876 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34304 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34296 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34296 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34296 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + local.get $0 i32.const 0 - global.set $~lib/rt/itcms/state + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 0 + i32.const 34320 + i32.const 34368 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1104,104 +965,343 @@ i32.sub local.set $1 end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34304 + i32.const 0 + i32.store + i32.const 35872 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34304 + i32.const 35876 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 - i32.lt_u + i32.wrap_i64 + i32.const -16 i32.and - i32.eqz + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $0 - local.get $2 + local.get $1 + local.get $4 i32.const 2 - i32.shl + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 - i32.shl - i32.and + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace local.tee $1 - if (result i32) + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $2 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1303,8 +1403,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1332,7 +1430,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1346,7 +1445,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1518,34 +1619,6 @@ memory.fill local.get $1 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $rt/issue-2719/issue2719_T - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/issue-2719/issue2719_T $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) (func $~start (local $0 i32) (local $1 i32) @@ -1702,76 +1775,4 @@ call $~lib/builtins/abort unreachable ) - (func $rt/issue-2719/issue2719_T#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1528 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1528 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34320 - i32.const 34368 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tests/compiler/rt/runtime-incremental-export.release.wat b/tests/compiler/rt/runtime-incremental-export.release.wat index 605d4f43c8..422cd0bc5a 100644 --- a/tests/compiler/rt/runtime-incremental-export.release.wat +++ b/tests/compiler/rt/runtime-incremental-export.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) + (type $5 (func (result i32))) + (type $6 (func (param i32 i32 i64))) (type $7 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -42,190 +42,6 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1520 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34356 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - local.get $0 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/toSpace - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 1568 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - i32.const 1572 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -250,76 +66,336 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 34356 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34356 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34356 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 @@ -642,119 +718,209 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/rt/itcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34356 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 + i32.const 1120 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - local.get $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -814,415 +980,418 @@ i32.store offset=96 local.get $1 i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34368 - i32.const 35940 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34368 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - i32.const 34356 - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + i32.add + local.set $1 + br $for-loop|1 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + i32.const 34368 + i32.const 35940 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34368 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34356 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34356 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - i32.const 10 - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 4 - i32.shr_u - local.set $1 + global.set $~lib/rt/itcms/iter + end + local.get $0 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/toSpace + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 else - local.get $1 - i32.const 536870910 - i32.lt_u + local.get $2 + i32.const 1568 + i32.load + i32.gt_u if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 2 + i32.shl + i32.const 1572 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 local.get $1 - i32.const 16 - i32.lt_u + i32.load offset=8 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $1 + i32.or + i32.store offset=4 + local.get $0 local.get $2 - i32.const 23 - i32.lt_u + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34356 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + ) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add + i32.const 20 + i32.sub + local.tee $1 i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl + i32.const 3 i32.and - local.tee $1 - if (result i32) + i32.const 3 + i32.ne + if + i32.const 1520 + i32.const 1120 + i32.const 352 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1456 + i32.const 1120 + i32.const 338 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/itcms/Object#unlink + global.get $~lib/rt/itcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 local.get $1 - i32.ctz local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 + i32.store offset=8 local.get $2 - i32.const 1 - i32.add - i32.shl + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 end + local.get $0 ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1322,8 +1491,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1351,7 +1518,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1365,7 +1533,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1537,116 +1707,6 @@ memory.fill local.get $1 ) - (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 1456 - i32.const 1120 - i32.const 338 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/pinSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $3 - i32.const 3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=8 - end - local.get $0 - ) - (func $~lib/rt/itcms/__unpin (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 1520 - i32.const 1120 - i32.const 352 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - local.get $1 - call $~lib/rt/itcms/Object#unlink - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) (func $~lib/rt/itcms/__collect global.get $~lib/rt/itcms/state i32.const 0 @@ -1682,63 +1742,4 @@ i32.add global.set $~lib/rt/itcms/threshold ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34356 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - ) ) diff --git a/tests/compiler/rt/runtime-minimal-export.release.wat b/tests/compiler/rt/runtime-minimal-export.release.wat index bbaf5cc296..dbea43d114 100644 --- a/tests/compiler/rt/runtime-minimal-export.release.wat +++ b/tests/compiler/rt/runtime-minimal-export.release.wat @@ -33,6 +33,52 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/tcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/tcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/toSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/tcms/white + i32.eqz + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -425,134 +471,199 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/rt/tcms/Object#unlink (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 1476 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 101 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1184 - i32.const 382 - i32.const 14 + i32.const 1120 + i32.const 105 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $3 + local.get $1 i32.const 4 - i32.add + i32.shr_u + local.set $1 + else local.get $1 - i32.gt_u + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1184 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - local.get $3 local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1184 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1184 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 + local.get $0 + local.get $2 i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.shl i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.load offset=4 + i32.const -1 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.and local.tee $1 - i32.const 0 - i32.le_s if (result i32) - i32.const 1 + local.get $0 local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else i32.const 0 end @@ -619,133 +730,272 @@ i32.const 1488 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.const 256 - i32.lt_u + i64.extend_i32_u + i64.lt_u if - local.get $1 + i32.const 0 + i32.const 1184 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 i32.const 4 - i32.shr_u - local.set $1 - else + i32.add local.get $1 - i32.const 536870910 - i32.lt_u + i32.gt_u if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 + i32.const 0 + i32.const 1184 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $3 local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 i32.sub - local.set $2 + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1184 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 16 - i32.lt_u local.get $2 - i32.const 23 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/tcms/__visit + return + end + unreachable + ) + (func $~start + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/tcms/fromSpace + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/tcms/pinSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/tcms/toSpace + ) + (func $~lib/rt/tcms/__unpin (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1184 - i32.const 334 - i32.const 14 + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 1376 + i32.const 1120 + i32.const 195 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 local.get $0 + global.get $~lib/rt/tcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $1 - if (result i32) + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tcms/__pin (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + if local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1280 + i32.const 1120 + i32.const 181 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/pinSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + i32.const 3 + i32.or + i32.store offset=4 local.get $1 - i32.ctz local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 + i32.store offset=8 local.get $2 - i32.const 1 - i32.add - i32.shl + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 end + local.get $0 ) (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -805,8 +1055,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -834,7 +1082,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -848,7 +1097,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1015,159 +1266,6 @@ i32.const 20 i32.add ) - (func $~lib/rt/tcms/Object#unlink (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 1476 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 101 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - return - end - local.get $0 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 105 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tcms/__pin (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.eq - if - i32.const 1280 - i32.const 1120 - i32.const 181 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tcms/Object#unlink - global.get $~lib/rt/tcms/pinSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $3 - i32.const 3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=8 - end - local.get $0 - ) - (func $~lib/rt/tcms/__unpin (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 1376 - i32.const 1120 - i32.const 195 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tcms/Object#unlink - global.get $~lib/rt/tcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/tcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - ) (func $~lib/rt/tcms/__collect (local $0 i32) (local $1 i32) @@ -1374,101 +1472,4 @@ local.get $3 global.set $~lib/rt/tcms/white ) - (func $~lib/rt/tcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/tcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - call $~lib/rt/tcms/Object#unlink - global.get $~lib/rt/tcms/toSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/tcms/white - i32.eqz - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/tcms/__visit - return - end - unreachable - ) - (func $~start - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/tcms/fromSpace - i32.const 1332 - i32.const 1328 - i32.store - i32.const 1336 - i32.const 1328 - i32.store - i32.const 1328 - global.set $~lib/rt/tcms/pinSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/tcms/toSpace - ) ) diff --git a/tests/compiler/rt/runtime-stub-export.release.wat b/tests/compiler/rt/runtime-stub-export.release.wat index 49d2915a10..639ae34c0b 100644 --- a/tests/compiler/rt/runtime-stub-export.release.wat +++ b/tests/compiler/rt/runtime-stub-export.release.wat @@ -1,9 +1,9 @@ (module (type $0 (func)) (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) (type $3 (func (param i32) (result i32))) - (type $4 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1168)) @@ -20,13 +20,21 @@ (export "__rtti_base" (global $~lib/rt/__rtti_base)) (export "memory" (memory $0)) (start $~start) + (func $~start + i32.const 1196 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__unpin (param $0 i32) + ) + (func $~lib/rt/stub/__pin (param $0 i32) (result i32) + local.get $0 + ) (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $0 i32.const 1073741804 i32.gt_u @@ -41,7 +49,7 @@ local.get $0 i32.const 16 i32.add - local.tee $4 + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -53,34 +61,33 @@ unreachable end global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset i32.const 4 i32.add local.tee $2 - local.get $4 + local.get $3 i32.const 19 i32.add i32.const -16 i32.and i32.const 4 i32.sub - local.tee $4 + local.tee $3 i32.add - local.tee $5 + local.tee $4 memory.size - local.tee $6 + local.tee $5 i32.const 16 i32.shl i32.const 15 i32.add i32.const -16 i32.and - local.tee $7 + local.tee $6 i32.gt_u if - local.get $6 local.get $5 - local.get $7 + local.get $4 + local.get $6 i32.sub i32.const 65535 i32.add @@ -88,16 +95,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $7 + local.tee $6 + local.get $5 local.get $6 - local.get $7 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $7 + local.get $6 memory.grow i32.const 0 i32.lt_s @@ -106,9 +113,10 @@ end end end - local.get $5 - global.set $~lib/rt/stub/offset + global.get $~lib/rt/stub/offset local.get $4 + global.set $~lib/rt/stub/offset + local.get $3 i32.store local.get $2 i32.const 4 @@ -129,15 +137,6 @@ i32.const 16 i32.add ) - (func $~lib/rt/stub/__pin (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__unpin (param $0 i32) - ) (func $~lib/rt/stub/__collect ) - (func $~start - i32.const 1196 - global.set $~lib/rt/stub/offset - ) ) diff --git a/tests/compiler/simd.release.wat b/tests/compiler/simd.release.wat index a554a20ba2..4194c78220 100644 --- a/tests/compiler/simd.release.wat +++ b/tests/compiler/simd.release.wat @@ -2,22 +2,22 @@ (type $0 (func (param i32))) (type $1 (func)) (type $2 (func (param i32 i32 i32) (result v128))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32) (result i32))) - (type $9 (func (param v128) (result v128))) - (type $10 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) - (type $11 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $7 (func (param i32) (result i32))) + (type $8 (func (result i32))) + (type $9 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $10 (func (param i64) (result v128))) + (type $11 (func (param i64 i64) (result v128))) (type $12 (func (param i32 i32 i32 i32) (result v128))) - (type $13 (func (param i64) (result v128))) - (type $14 (func (param i64 i64) (result v128))) - (type $15 (func (param f32 f32 f32) (result v128))) - (type $16 (func (param f32 f32 f32 f32) (result v128))) - (type $17 (func (param f64) (result v128))) - (type $18 (func (param f64 f64) (result v128))) + (type $13 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result v128))) + (type $14 (func (param f64) (result v128))) + (type $15 (func (param f64 f64) (result v128))) + (type $16 (func (param f32 f32 f32) (result v128))) + (type $17 (func (param f32 f32 f32 f32) (result v128))) + (type $18 (func (param v128) (result v128))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -65,182 +65,341 @@ (export "vec" (global $simd/vec)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace + memory.size local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - i32.ne + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34384 + i32.const 0 + i32.store + i32.const 35952 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 160 + i32.const 2 + i32.shl + i32.const 34384 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 i32.const 16 - call $~lib/builtins/abort - unreachable + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34384 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end end local.get $0 - i32.const 20 + i32.const 1 i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and local.set $0 - br $while-continue|0 + br $for-loop|0 end end + i32.const 34384 + i32.const 35956 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34384 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end + i32.const 1104 + i32.const 1440 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 local.get $0 - i32.load offset=4 - i32.const -4 - i32.and + i32.load offset=1568 + memory.size local.tee $1 - i32.eqz + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34380 - i32.lt_u - i32.and - i32.eqz + local.get $2 + memory.grow + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1168 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end local.get $0 - i32.load offset=8 - local.tee $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 i32.eqz if i32.const 0 - i32.const 1168 - i32.const 132 + i32.const 1440 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1440 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock else local.get $1 - i32.const 1584 - i32.load - i32.gt_u - if - i32.const 1296 - i32.const 1360 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end + local.get $4 + i32.const -2 + i32.and + i32.store local.get $1 - i32.const 2 - i32.shl - i32.const 1588 + i32.const 4 i32.add + local.get $1 i32.load - i32.const 32 + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 i32.and + i32.store end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + local.get $1 + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 - global.get $~lib/rt/itcms/white + i32.const 34380 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 + i32.const 4 + i32.sub + local.set $1 local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 + i32.const 15 i32.and - i32.or - i32.store offset=4 - local.get $2 + i32.const 1 local.get $0 - i32.store offset=8 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 @@ -658,909 +817,1315 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 + i32.const 1168 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34380 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 end - else local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u + i32.load offset=8 + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 + i32.const 1168 + i32.const 132 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1584 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1588 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + select + local.get $2 i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 + local.get $0 local.get $1 - i32.const 0 i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34384 - i32.const 0 - i32.store - i32.const 35952 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34384 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34384 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid + end + return + end + return + end + return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + call $~lib/array/Array~visit + return end + local.get $0 + call $~lib/array/Array~visit + return end - i32.const 34384 - i32.const 35956 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34384 - global.set $~lib/rt/tlsf/ROOT + unreachable ) - (func $~lib/rt/tlsf/__free (param $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.const 34380 + local.get $1 + i32.const 256 i32.lt_u if - return + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.const 15 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl i32.and - i32.const 1 - local.get $0 - select + local.tee $1 if (result i32) - i32.const 1 - else + local.get $0 local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 i32.load + i32.const -1 + local.get $2 i32.const 1 + i32.add + i32.shl i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 i32.const 1440 - i32.const 562 - i32.const 3 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 - i32.load + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 i32.const 1 i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/itcms/step (result i32) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1168 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 i32.load offset=4 i32.const -4 i32.and local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34380 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if i32.const 0 - i32.const 1168 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 34380 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub i32.shl i32.add - i32.const 1 - i32.sub - local.set $1 + global.set $~lib/rt/itcms/threshold end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1440 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT + i32.const 32 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 + i32.store offset=12 local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + i32.const 16 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 local.get $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1104 - i32.const 1440 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 local.get $0 local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $3 - end - else - local.get $3 - end - i32.const 4 - local.get $0 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $1 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $1 i32.load i32.const -4 i32.and - i32.gt_u + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.store align=1 + local.get $0 + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s if - i32.const 0 - i32.const 1440 - i32.const 501 - i32.const 14 + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 i32.load - local.set $4 - local.get $3 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1440 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - local.get $4 - i32.const 2 - i32.and - i32.or + global.set $~lib/memory/__stack_pointer + ) + (func $~start + (local $0 i32) + (local $1 i32) + (local $2 v128) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + memory.size + i32.const 16 + i32.shl + i32.const 34380 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 i32.store - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - local.get $2 + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.const 1 - i32.or + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 1056 + v128.load align=1 + v128.store align=1 local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $4 - i32.const -2 - i32.and i32.store - local.get $1 i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and + call $~lib/rt/itcms/__new + local.tee $4 + local.get $3 i32.store - end - local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step + local.get $3 + if + local.get $4 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $3 + i32.const 20 + i32.sub + local.tee $5 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $4 + i32.const 20 i32.sub - local.set $1 - global.get $~lib/rt/itcms/state + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white i32.eqz + i32.eq if - global.get $~lib/rt/itcms/total + local.get $5 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + end end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 32 - call $~lib/rt/tlsf/allocateBlock - local.tee $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $0 - local.get $1 - local.get $2 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - v128.store align=1 - local.get $0 - ) - (func $simd/test_v128 - (local $0 i32) - (local $1 v128) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 64 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + local.get $4 + local.get $3 + i32.store offset=4 + local.get $4 + i32.const 16 + i32.store offset=8 + local.get $4 + i32.const 1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=12 + i32.eqz + if + i32.const 1296 + i32.const 1504 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + v128.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32x4.extract_lane 0 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 + global.set $simd/vec + call $simd/test_v128 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 2 + i32.store8 offset=1 + local.get $0 + i32.const 3 + i32.store8 offset=2 + local.get $0 + i32.const 4 + i32.store8 offset=3 + local.get $0 + i32.const 5 + i32.store8 offset=4 + local.get $0 + i32.const 6 + i32.store8 offset=5 + local.get $0 + i32.const 7 + i32.store8 offset=6 + local.get $0 + i32.const 255 + i32.store8 offset=7 + local.get $0 + v128.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 609 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 614 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store16 + local.get $0 + i32.const 2 + i32.store16 offset=2 + local.get $0 + i32.const 3 + i32.store16 offset=4 + local.get $0 + i32.const 65535 + i32.store16 offset=6 + local.get $0 + v128.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 790 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 795 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 + v128.load32x2_s align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 862 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.load32x2_u align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 867 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34380 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34380 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $simd/test_vars_i8x16_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x03000100 0x07000504 0x0b0a0908 0x000e0d0c + local.get $0 + i8x16.replace_lane 2 + local.get $1 + i8x16.replace_lane 6 + local.get $2 + i8x16.replace_lane 15 + ) + (func $simd/test_vars_i8x16_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) (param $15 i32) (result v128) + local.get $0 + i8x16.splat + local.get $1 + i8x16.replace_lane 1 + local.get $2 + i8x16.replace_lane 2 + local.get $3 + i8x16.replace_lane 3 + local.get $4 + i8x16.replace_lane 4 + local.get $5 + i8x16.replace_lane 5 + local.get $6 + i8x16.replace_lane 6 + local.get $7 + i8x16.replace_lane 7 + local.get $8 + i8x16.replace_lane 8 + local.get $9 + i8x16.replace_lane 9 + local.get $10 + i8x16.replace_lane 10 + local.get $11 + i8x16.replace_lane 11 + local.get $12 + i8x16.replace_lane 12 + local.get $13 + i8x16.replace_lane 13 + local.get $14 + i8x16.replace_lane 14 + local.get $15 + i8x16.replace_lane 15 + ) + (func $simd/test_vars_i64x2_partial (param $0 i64) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + i64x2.replace_lane 1 + ) + (func $simd/test_vars_i64x2_full (param $0 i64) (param $1 i64) (result v128) + local.get $0 + i64x2.splat + local.get $1 + i64x2.replace_lane 1 + ) + (func $simd/test_vars_i32x4_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + i32x4.replace_lane 1 + local.get $1 + i32x4.replace_lane 2 + local.get $2 + i32x4.replace_lane 3 + ) + (func $simd/test_vars_i32x4_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result v128) + local.get $0 + i32x4.splat + local.get $1 + i32x4.replace_lane 1 + local.get $2 + i32x4.replace_lane 2 + local.get $3 + i32x4.replace_lane 3 + ) + (func $simd/test_vars_i16x8_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) + v128.const i32x4 0x00010000 0x00030000 0x00050000 0x00000006 + local.get $0 + i16x8.replace_lane 2 + local.get $1 + i16x8.replace_lane 4 + local.get $2 + i16x8.replace_lane 7 + ) + (func $simd/test_vars_i16x8_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result v128) + local.get $0 + i16x8.splat + local.get $1 + i16x8.replace_lane 1 + local.get $2 + i16x8.replace_lane 2 + local.get $3 + i16x8.replace_lane 3 + local.get $4 + i16x8.replace_lane 4 + local.get $5 + i16x8.replace_lane 5 + local.get $6 + i16x8.replace_lane 6 + local.get $7 + i16x8.replace_lane 7 + ) + (func $simd/test_vars_f64x2_partial (param $0 f64) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + f64x2.replace_lane 1 + ) + (func $simd/test_vars_f64x2_full (param $0 f64) (param $1 f64) (result v128) + local.get $0 + f64x2.splat + local.get $1 + f64x2.replace_lane 1 + ) + (func $simd/test_vars_f32x4_partial (param $0 f32) (param $1 f32) (param $2 f32) (result v128) + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + local.get $0 + f32x4.replace_lane 1 + local.get $1 + f32x4.replace_lane 2 + local.get $2 + f32x4.replace_lane 3 + ) + (func $simd/test_vars_f32x4_full (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result v128) + local.get $0 + f32x4.splat + local.get $1 + f32x4.replace_lane 1 + local.get $2 + f32x4.replace_lane 2 + local.get $3 + f32x4.replace_lane 3 + ) + (func $simd/test_v128 + (local $0 i32) + (local $1 v128) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 64 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 local.get $0 v128.load offset=16 @@ -1697,160 +2262,7 @@ i32.const 42 i32.store local.get $0 - v128.load32_zero - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 111 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i64.const 42 - i64.store - local.get $0 - v128.load64_zero - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 121 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 42 - i32.store - local.get $0 - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - v128.load32_lane 0 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 192 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 42 - i32.store - local.get $0 - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - v128.load32_lane 0 - local.tee $1 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 200 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v128.load8_lane 0 - local.tee $1 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 202 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v128.load16_lane 0 - local.tee $1 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 204 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v128.load32_lane 0 - local.tee $1 - v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 206 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - v128.load64_lane 0 + v128.load32_zero v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 i8x16.eq i8x16.all_true @@ -1858,7 +2270,7 @@ if i32.const 0 i32.const 1552 - i32.const 208 + i32.const 111 i32.const 5 call $~lib/builtins/abort unreachable @@ -1876,650 +2288,239 @@ i32.const 4 i32.add local.tee $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store32_lane 0 + i64.const 42 + i64.store local.get $0 - i32.load - i32.const 42 - i32.ne + v128.load64_zero + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 215 + i32.const 121 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store8_lane 4 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store local.get $0 - i32.load8_s - i32.const 43 - i32.ne + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.load32_lane 0 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 217 + i32.const 192 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store16_lane 4 + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store local.get $0 - i32.load16_s - i32.const 44 - i32.ne + v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 + v128.load32_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 219 + i32.const 200 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store32_lane 1 - local.get $0 - i32.load - i32.const 43 - i32.ne + local.get $1 + v128.load8_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 221 + i32.const 202 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 - v128.store64_lane offset=1 1 - local.get $0 - i64.load offset=1 - i64.const 44 - i64.ne + local.get $1 + v128.load16_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if i32.const 0 i32.const 1552 - i32.const 223 + i32.const 204 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/tlsf/__free - ) - (func $simd/reexport (param $0 v128) (result v128) - local.get $0 - local.get $0 - i32x4.mul - ) - (func $simd/test_vars_i8x16_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) - v128.const i32x4 0x03000100 0x07000504 0x0b0a0908 0x000e0d0c - local.get $0 - i8x16.replace_lane 2 - local.get $1 - i8x16.replace_lane 6 - local.get $2 - i8x16.replace_lane 15 - ) - (func $simd/test_vars_i8x16_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) (param $15 i32) (result v128) - local.get $0 - i8x16.splat - local.get $1 - i8x16.replace_lane 1 - local.get $2 - i8x16.replace_lane 2 - local.get $3 - i8x16.replace_lane 3 - local.get $4 - i8x16.replace_lane 4 - local.get $5 - i8x16.replace_lane 5 - local.get $6 - i8x16.replace_lane 6 - local.get $7 - i8x16.replace_lane 7 - local.get $8 - i8x16.replace_lane 8 - local.get $9 - i8x16.replace_lane 9 - local.get $10 - i8x16.replace_lane 10 - local.get $11 - i8x16.replace_lane 11 - local.get $12 - i8x16.replace_lane 12 - local.get $13 - i8x16.replace_lane 13 - local.get $14 - i8x16.replace_lane 14 - local.get $15 - i8x16.replace_lane 15 - ) - (func $simd/test_vars_i16x8_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) - v128.const i32x4 0x00010000 0x00030000 0x00050000 0x00000006 - local.get $0 - i16x8.replace_lane 2 - local.get $1 - i16x8.replace_lane 4 - local.get $2 - i16x8.replace_lane 7 - ) - (func $simd/test_vars_i16x8_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result v128) - local.get $0 - i16x8.splat - local.get $1 - i16x8.replace_lane 1 - local.get $2 - i16x8.replace_lane 2 - local.get $3 - i16x8.replace_lane 3 - local.get $4 - i16x8.replace_lane 4 - local.get $5 - i16x8.replace_lane 5 - local.get $6 - i16x8.replace_lane 6 - local.get $7 - i16x8.replace_lane 7 - ) - (func $simd/test_vars_i32x4_partial (param $0 i32) (param $1 i32) (param $2 i32) (result v128) - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - local.get $0 - i32x4.replace_lane 1 - local.get $1 - i32x4.replace_lane 2 - local.get $2 - i32x4.replace_lane 3 - ) - (func $simd/test_vars_i32x4_full (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result v128) - local.get $0 - i32x4.splat - local.get $1 - i32x4.replace_lane 1 - local.get $2 - i32x4.replace_lane 2 - local.get $3 - i32x4.replace_lane 3 - ) - (func $simd/test_vars_i64x2_partial (param $0 i64) (result v128) - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - local.get $0 - i64x2.replace_lane 1 - ) - (func $simd/test_vars_i64x2_full (param $0 i64) (param $1 i64) (result v128) - local.get $0 - i64x2.splat - local.get $1 - i64x2.replace_lane 1 - ) - (func $simd/test_vars_f32x4_partial (param $0 f32) (param $1 f32) (param $2 f32) (result v128) - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - local.get $0 - f32x4.replace_lane 1 - local.get $1 - f32x4.replace_lane 2 - local.get $2 - f32x4.replace_lane 3 - ) - (func $simd/test_vars_f32x4_full (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result v128) - local.get $0 - f32x4.splat - local.get $1 - f32x4.replace_lane 1 - local.get $2 - f32x4.replace_lane 2 - local.get $3 - f32x4.replace_lane 3 - ) - (func $simd/test_vars_f64x2_partial (param $0 f64) (result v128) - v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 - local.get $0 - f64x2.replace_lane 1 - ) - (func $simd/test_vars_f64x2_full (param $0 f64) (param $1 f64) (result v128) - local.get $0 - f64x2.splat local.get $1 - f64x2.replace_lane 1 - ) - (func $~lib/array/Array~visit (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s + v128.load32_lane 0 + local.tee $1 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz if - i32.const 34400 - i32.const 34448 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1552 + i32.const 206 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $1 + v128.load64_lane 0 + v128.const i32x4 0x0000002a 0x00000000 0x00000000 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 208 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer + call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - call $~lib/array/Array~visit - return - end - local.get $0 - call $~lib/array/Array~visit - return + local.tee $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store32_lane 0 + local.get $0 + i32.load + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 215 + i32.const 5 + call $~lib/builtins/abort + unreachable end - unreachable - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 v128) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - memory.size - i32.const 16 - i32.shl - i32.const 34380 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store8_lane 4 + local.get $0 + i32.load8_s + i32.const 43 + i32.ne + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 1056 - v128.load align=1 - v128.store align=1 - local.get $3 - i32.store - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $4 - local.get $3 - i32.store - local.get $3 - if - local.get $4 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $3 - i32.const 20 - i32.sub - local.tee $5 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $4 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $5 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $1 - i32.const 3 - i32.eq - i32.and - if - local.get $5 - call $~lib/rt/itcms/Object#makeGray - end - end - end - end - local.get $4 - local.get $3 - i32.store offset=4 - local.get $4 - i32.const 16 - i32.store offset=8 - local.get $4 - i32.const 1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.const 217 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store16_lane 4 + local.get $0 + i32.load16_s + i32.const 44 + i32.ne + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=12 - i32.eqz - if - i32.const 1296 - i32.const 1504 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - v128.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32x4.extract_lane 0 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 5 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 - global.set $simd/vec - call $simd/test_v128 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 1 - i32.store8 - local.get $0 - i32.const 2 - i32.store8 offset=1 - local.get $0 - i32.const 3 - i32.store8 offset=2 - local.get $0 - i32.const 4 - i32.store8 offset=3 - local.get $0 + i32.const 1552 + i32.const 219 i32.const 5 - i32.store8 offset=4 - local.get $0 - i32.const 6 - i32.store8 offset=5 - local.get $0 - i32.const 7 - i32.store8 offset=6 - local.get $0 - i32.const 255 - i32.store8 offset=7 - local.get $0 - v128.load8x8_s align=1 - v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 609 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - v128.load8x8_u align=1 - v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 614 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 1 - i32.store16 - local.get $0 - i32.const 2 - i32.store16 offset=2 - local.get $0 - i32.const 3 - i32.store16 offset=4 - local.get $0 - i32.const 65535 - i32.store16 offset=6 - local.get $0 - v128.load16x4_s align=2 - v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 790 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - v128.load16x4_u align=2 - v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 795 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 16 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 1 - i32.store - local.get $0 - i32.const -1 - i32.store offset=4 - local.get $0 - v128.load32x2_s align=4 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 862 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - v128.load32x2_u align=4 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 867 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + call $~lib/builtins/abort + unreachable end - i32.const 34400 - i32.const 34448 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store32_lane 1 + local.get $0 + i32.load + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 221 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + v128.const i32x4 0x0000002a 0x0000002b 0x0000002c 0x00000000 + v128.store64_lane offset=1 1 + local.get $0 + i64.load offset=1 + i64.const 44 + i64.ne + if + i32.const 0 + i32.const 1552 + i32.const 223 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $simd/reexport (param $0 v128) (result v128) + local.get $0 + local.get $0 + i32x4.mul ) ) diff --git a/tests/compiler/std/array-access.release.wat b/tests/compiler/std/array-access.release.wat index d9ec8e7386..b24b426a6e 100644 --- a/tests/compiler/std/array-access.release.wat +++ b/tests/compiler/std/array-access.release.wat @@ -221,7 +221,7 @@ local.get $2 i32.eqz ) - (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -255,42 +255,12 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1308 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=12 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.le_u - if - i32.const 1056 - i32.const 1120 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.shr_u global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -308,7 +278,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -343,11 +313,7 @@ local.get $0 i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + call $~lib/string/String#startsWith global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -365,7 +331,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -379,7 +345,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -390,19 +356,33 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - call $~lib/string/String#startsWith + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -418,7 +398,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -463,11 +443,7 @@ local.get $0 i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + call $~lib/string/String#startsWith global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -485,7 +461,7 @@ call $~lib/builtins/abort unreachable ) - (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) + (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -499,7 +475,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -510,29 +486,53 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1308 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.load offset=12 i32.const 1 - call $~lib/array/Array<~lib/array/Array>#__get - local.set $0 + i32.le_u + if + i32.const 1056 + i32.const 1120 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/string/String#startsWith + i32.load offset=4 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/array-literal.release.wat b/tests/compiler/std/array-literal.release.wat index d53285989a..0f52e76640 100644 --- a/tests/compiler/std/array-literal.release.wat +++ b/tests/compiler/std/array-literal.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func (param i32))) (type $1 (func (param i32 i32 i32))) - (type $2 (func)) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func)) (type $4 (func (result i32))) (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32) (result i32))) - (type $9 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32) (result i32))) + (type $8 (func (param i32 i32 i32) (result i32))) + (type $9 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 1424)) (global $std/array-literal/i (mut i32) (i32.const 0)) @@ -59,219 +59,6 @@ (data $17 (i32.const 1840) "\n\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00B\08\00\00\02\t\00\00 \00\00\00\02A\00\00 \00\00\00\02A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1344 - call $~lib/rt/itcms/__visit - global.get $std/array-literal/emptyArrayI32 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayI8 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayI32 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayRef - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/array-literal/dynamicArrayRefWithCtor - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1200 - call $~lib/rt/itcms/__visit - i32.const 1808 - call $~lib/rt/itcms/__visit - i32.const 1472 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1536 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$154 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34652 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$154 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1840 - i32.load - i32.gt_u - if - i32.const 1200 - i32.const 1664 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1844 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -296,591 +83,571 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s if - i32.const 0 - i32.const 1744 - i32.const 268 - i32.const 14 + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 1744 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 + i32.const 2 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.store offset=12 end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store local.get $0 local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1744 - i32.const 201 - i32.const 14 + i32.const 1472 + i32.const 1536 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1744 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 i32.add - local.tee $4 - i32.load local.tee $2 - i32.const 1 - i32.and + i32.const 1073741820 + i32.gt_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add + i32.const 1472 + i32.const 1744 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1744 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1744 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1744 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shr_u + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - i32.const 31 - i32.const 1073741820 local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 + i32.const 4 + i32.add local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1744 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.load + i32.const -3 + i32.and + i32.store end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 + local.get $3 i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl + i32.const 3 + i32.and i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill local.get $1 - i64.extend_i32_u - i64.lt_u + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s if - i32.const 0 - i32.const 1744 - i32.const 382 - i32.const 14 + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.load offset=12 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1744 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1744 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1200 + i32.const 1264 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s if - return + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 + i32.store local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + local.get $0 + i32.load offset=12 + i32.ge_u if + i32.const 1200 + i32.const 1264 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort unreachable end - i32.const 34656 - i32.const 0 - i32.store - i32.const 36224 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34656 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34656 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 34656 - i32.const 36228 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34656 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + i32.store + local.get $2 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1142,51 +909,136 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $std/array-literal/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 256 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 i32.lt_u if - local.get $1 + i32.const 0 + i32.const 1744 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1197,410 +1049,342 @@ if i32.const 0 i32.const 1744 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1744 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.get $1 + i32.eqz if - i32.const 1472 - i32.const 1536 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1744 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1472 + i32.const 0 i32.const 1744 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 + local.get $0 local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 i32.add - i32.const -65536 + local.get $2 + i32.const -4 i32.and - i32.const 16 - i32.shr_u + i32.add local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and i32.eqz if i32.const 0 i32.const 1744 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1744 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1744 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total + i32.shl local.get $2 - i32.const 20 i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + i32.const 2 + i32.shl + i32.add local.get $1 - i32.eqz - if - return - end + i32.store offset=96 local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 i32.const 20 i32.sub @@ -1642,103 +1426,137 @@ end end ) - (func $~lib/array/Array~visit (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array~visit (param $0 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 + block $__inlined_func$~lib/rt/itcms/Object#unlink$154 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34652 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$154 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 + local.tee $1 i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 + i32.le_u + if (result i32) + i32.const 1 + else local.get $1 - local.get $2 - i32.lt_u + i32.const 1840 + i32.load + i32.gt_u if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 + i32.const 1200 + i32.const 1664 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 2 + i32.shl + i32.const 1844 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1791,10 +1609,9 @@ end unreachable ) - (func $~start - call $start:std/array-literal - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1816,16 +1633,119 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.load offset=8 + local.tee $3 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1808 + i32.const 1264 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + local.get $2 + i32.shl + local.tee $1 + local.get $1 + local.get $3 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $1 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $1 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$149 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1850,12 +1770,30 @@ i32.load offset=12 i32.ge_u if - i32.const 1200 - i32.const 1264 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -1864,13 +1802,15 @@ local.get $0 i32.load offset=4 i32.add - i32.load8_s + local.get $2 + i32.store8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1897,12 +1837,30 @@ i32.load offset=12 i32.ge_u if - i32.const 1200 - i32.const 1264 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1200 + i32.const 1264 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -1913,15 +1871,15 @@ i32.const 2 i32.shl i32.add - i32.load + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $std/array-literal/RefWithCtor#constructor (result i32) + (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1941,320 +1899,423 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - local.tee $3 - local.get $2 - i32.shr_u - i32.gt_u + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if local.get $1 - i32.const 1073741820 - local.get $2 + i32.const 4 i32.shr_u - i32.gt_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 1808 - i32.const 1264 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$149 - i32.const 1073741820 - local.get $3 - i32.const 1 - i32.shl - local.tee $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.const 8 local.get $1 + i32.const 1 + i32.const 27 local.get $1 - i32.const 8 - i32.le_u - select - local.get $2 + i32.clz + i32.sub i32.shl - local.tee $1 - local.get $1 - local.get $3 - i32.lt_u - select - local.tee $3 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.load + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.tee $2 - i32.const 20 - i32.sub - local.tee $4 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u + i32.eqz if - local.get $4 - local.get $3 - i32.store offset=16 - local.get $2 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$149 + i32.const 0 + i32.const 1744 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.get $4 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $0 local.get $2 - local.get $3 - local.get $4 - i32.load offset=16 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_u - select - memory.copy + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 local.get $1 - local.get $2 - i32.ne + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34656 + i32.const 0 + i32.store + i32.const 36224 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 + i32.const 2 + i32.shl + i32.const 34656 + i32.add + i32.const 0 i32.store offset=4 - local.get $0 - local.get $1 i32.const 0 - call $~lib/rt/itcms/__link + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34656 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $0 - local.get $3 - i32.store offset=8 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34656 + i32.const 36228 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34656 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1744 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.load offset=12 - i32.ge_u + i32.load offset=1568 + local.tee $3 if + local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 0 - i32.lt_s + i32.gt_u if - i32.const 1200 - i32.const 1264 - i32.const 130 - i32.const 22 + i32.const 0 + i32.const 1744 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.const 1572 + i32.add local.get $1 - i32.const 0 - i32.lt_s + i32.gt_u if - i32.const 1200 - i32.const 1264 - i32.const 130 - i32.const 22 + i32.const 0 + i32.const 1744 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - local.get $2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $std/array-literal/Ref#constructor (result i32) + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + global.get $std/array-literal/emptyArrayI32 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRef + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $0 + if local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + call $~lib/rt/itcms/__visit + end + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1808 + call $~lib/rt/itcms/__visit + i32.const 1472 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.eqz + local.get $1 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return end - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array~visit (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2277,56 +2338,82 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 local.get $0 i32.load offset=12 - i32.ge_u - if + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 local.get $1 - i32.const 0 - i32.lt_s + local.get $2 + i32.lt_u if - i32.const 1200 - i32.const 1264 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array~visit (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1884 + i32.lt_s + if + i32.const 34672 + i32.const 34720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + call $start:std/array-literal + ) (func $start:std/array-literal (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -2844,90 +2931,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.shl - local.tee $1 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $3 - i32.store - local.get $2 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/array-literal/RefWithCtor#constructor (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1884 - i32.lt_s - if - i32.const 34672 - i32.const 34720 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index 45106a414b..51cb4b38f6 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32) (result i32))) (type $3 (func (param i32 i32 i32))) (type $4 (func (param i32 i32 i32 i32) (result i32))) - (type $5 (func (param f32 f32) (result i32))) - (type $6 (func (param f64 f64) (result i32))) + (type $5 (func (param f64 f64) (result i32))) + (type $6 (func (param f32 f32) (result i32))) (type $7 (func (param i32 i32))) (type $8 (func (param i32))) (type $9 (func (param i32 i32 i32 i32))) @@ -14,19 +14,19 @@ (type $12 (func (result f64))) (type $13 (func (param i32 i32 i32 i32 i32 i32))) (type $14 (func (result i32))) - (type $15 (func (param i32 i32 i32) (result f32))) + (type $15 (func (param i32 i64) (result i32))) (type $16 (func (param i32 f64) (result i32))) - (type $17 (func (param i32 i64) (result i32))) - (type $18 (func (param i32 i32 i64))) - (type $19 (func (param i32 i64 i64 i32 i64 i32) (result i32))) + (type $17 (func (param i32 i32 i32) (result f32))) + (type $18 (func (param i32 i32) (result f32))) + (type $19 (func (param i32 i32) (result f64))) (type $20 (func (param i32 i64 i32))) - (type $21 (func (param i32 f32 i32 i32))) - (type $22 (func (param i32 i32) (result f32))) - (type $23 (func (param i32 f32 i32))) - (type $24 (func (param i32 i32) (result f64))) + (type $21 (func (param i32 f32 i32))) + (type $22 (func (param i32 f32 i32 i32))) + (type $23 (func (param i32 i32 i64))) + (type $24 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -660,1259 +660,1385 @@ (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|20 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $start:std/array~anonymous|34 $start:std/array~anonymous|34 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|34 $start:std/array~anonymous|40 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|49 $start:std/array~anonymous|52 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $start:std/array~anonymous|54) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $std/array/arr - local.tee $0 + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 10032 - call $~lib/rt/itcms/__visit - global.get $std/array/inputStabArr - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + local.get $3 + local.get $5 + memory.copy end - global.get $std/array/outputStabArr - local.tee $0 + local.get $1 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1344 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 2640 - call $~lib/rt/itcms/__visit - i32.const 6416 - call $~lib/rt/itcms/__visit - i32.const 1152 - call $~lib/rt/itcms/__visit - i32.const 8144 - call $~lib/rt/itcms/__visit - i32.const 9200 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz + local.get $1 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 30 + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 call $~lib/builtins/abort unreachable end + local.get $0 local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$731 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 48960 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$731 - end + i32.store local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + local.get $3 + i32.store offset=12 end - global.get $~lib/rt/itcms/toSpace - local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 16000 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 16004 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + i32.store local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz + i32.load offset=4 + local.get $1 i32.const 2 - local.get $3 - select + i32.shl + i32.add local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 + i32.store local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $2 - local.get $0 - i32.store offset=8 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $2 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 return end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount + i32.const 48992 + i32.const 49040 i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 268 - i32.const 14 + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#pop (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 270 - i32.const 14 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 0 + i32.le_s if - i32.const 0 - i32.const 1488 - i32.const 284 - i32.const 14 + i32.const 2640 + i32.const 1104 + i32.const 271 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add + i32.const 1 + i32.sub + local.tee $1 i32.const 2 i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 201 - i32.const 14 + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1488 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.const 4 + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load i32.const -4 i32.and + i32.const 4 i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 i32.add - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 251 - i32.const 14 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl + i32.store + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl + i32.store + local.get $0 + i32.load offset=4 local.get $2 - i32.add i32.const 2 i32.shl i32.add local.get $1 - i32.store offset=96 - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 382 - i32.const 14 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=1568 - local.tee $3 + local.get $1 + i32.eq if - local.get $3 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if + global.set $~lib/memory/__stack_pointer + i32.const 1 return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 48960 - i32.const 0 - i32.store - i32.const 50528 - i32.const 0 - i32.store - loop $for-loop|0 + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 48960 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl$1 (result i32) + local.get $2 + i32.const 4 + i32.ge_u + if (result i32) + local.get $0 + i32.const 7 + i32.and local.get $1 - i32.const 16 - i32.lt_u + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 if local.get $0 - i32.const 4 - i32.shl + i32.load16_u + local.tee $3 local.get $1 - i32.add + i32.load16_u + local.tee $4 + i32.ne + if + local.get $3 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl$1 + end + local.get $0 i32.const 2 - i32.shl - i32.const 48960 i32.add - i32.const 0 - i32.store offset=96 + local.set $0 local.get $1 - i32.const 1 + i32.const 2 i32.add local.set $1 - br $for-loop|1 + br $while-continue|1 end end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 end + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 48960 - i32.const 50532 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 48960 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/__free (param $0 i32) + (func $std/array/Dim#constructor (result i32) + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 48960 - i32.lt_u - if - return + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/rt/tlsf/ROOT + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 i32.eqz if - call $~lib/rt/tlsf/initialize + return end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.const 1 local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $1 - i32.load - i32.const 1 - i32.and - end + i32.eqz if i32.const 0 - i32.const 1488 - i32.const 562 - i32.const 3 + i32.const 1216 + i32.const 295 + i32.const 14 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/itcms/white local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$736 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz if global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 48960 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + br $__inlined_func$~lib/string/String#concat$736 end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.const 48960 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end - i32.const 10 - return + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 0 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 local.get $1 - i32.const 536870910 - i32.lt_u + i32.const 10000 + i32.ge_u if local.get $1 - i32.const 1 - i32.const 27 + i32.const 10000 + i32.rem_u + local.set $3 local.get $1 - i32.clz + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 i32.sub + local.tee $2 + i32.const 1 i32.shl i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 i32.sub local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.const 10 + i32.ge_u if - i32.const 0 - i32.const 1488 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) local.get $0 - local.get $1 - i32.ctz local.get $2 - i32.const 4 + i32.const 2 + i32.sub + i32.const 1 i32.shl i32.add + local.get $1 i32.const 2 i32.shl + i32.const 7724 i32.add - i32.load offset=96 + i32.load + i32.store else local.get $0 - i32.load - i32.const -1 local.get $2 i32.const 1 - i32.add + i32.sub + i32.const 1 i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + (func $std/array/internalCapacity (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 1152 - i32.const 1488 - i32.const 461 - i32.const 29 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_s + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/Ref#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 12 - i32.le_u + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s if (result i32) - i32.const 12 - else + i32.const 1 local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz if - memory.size - local.tee $1 - local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - local.get $3 + unreachable + end + i32.const 48960 + i32.const 0 + i32.store + i32.const 50528 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 48960 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 48960 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 48960 + i32.const 50532 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 48960 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.tee $4 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $5 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.tee $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $5 + i32.const 2 + i32.shl + memory.copy + local.get $4 + local.get $5 + i32.add + local.tee $4 + local.get $3 + i32.ne + if + local.get $6 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + memory.copy + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + local.get $5 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 i32.const 536870910 i32.lt_u if (result i32) @@ -1935,7 +2061,8 @@ i32.const 4 local.get $0 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1949,7 +2076,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 i32.gt_s @@ -2076,4443 +2205,4308 @@ end local.get $1 ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.ge_u + i32.const 48960 + i32.lt_u if - i32.const 1152 - i32.const 1216 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/rt/tlsf/ROOT + i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 + i32.const 15 i32.and - i32.or - i32.store offset=4 + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill + i32.const 1 + i32.or + i32.store local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $1 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - return + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $3 i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + i32.lt_s if + local.get $2 + local.get $3 + i32.add + local.tee $2 i32.const 0 - i32.const 1216 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s if local.get $0 - local.get $1 local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 i32.eq - i32.and if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 ) - (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.eq - ) - (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 100 - i32.eq - ) - (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 0 - i32.ge_s - ) - (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $1 i32.const 0 - i32.le_s - ) - (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.ge_s - ) - (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 + local.get $1 i32.const 0 - i32.lt_s - ) - (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 10 i32.gt_s - ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $std/array/i + select + local.tee $2 local.get $0 - i32.add - global.set $std/array/i - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 7724 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 7724 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 local.get $1 - i32.const 100 - i32.ge_u + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 7724 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return end + local.get $3 + i32.eqz + local.get $4 local.get $1 - i32.const 10 - i32.ge_u + i32.const 1 + i32.shl + i32.eq + i32.and if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 7724 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - i32.store - else + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 + return end - ) - (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - call $~lib/util/number/itoa32 - ) - (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - f32.convert_i32_s - ) - (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - ) - (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $std/array/i + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 local.get $0 + local.get $3 i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 + local.get $2 + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - i32.const 1 - local.get $1 - i32.const 2 - i32.gt_s + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - select - ) - (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - i32.const 1 + i32.store local.get $1 - i32.const 100 - i32.gt_s local.get $0 - select - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 f32) - (local $6 f32) - (local $7 i32) - (local $8 f32) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 local.get $1 - i32.sub - i32.const 1 + i32.const 2 + i32.shl i32.add - local.tee $7 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $7 - i32.const 1 - i32.and - local.get $3 - select + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load offset=4 - local.tee $8 - local.set $6 - local.get $3 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $8 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.le_s - if - local.get $5 - local.set $6 - local.get $8 - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 - local.get $8 - f32.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $9 - local.get $5 - f32.store offset=4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store offset=4 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end - end + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - local.get $2 - i32.eq + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $1 - return + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - f32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz if - loop $while-continue|0 - local.get $2 + i32.const 6416 + i32.const 1104 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load offset=4 - local.get $6 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $5) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 + i32.ne + br_if $folding-inner0 + local.get $0 local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f32.store + i32.eq + br_if $folding-inner1 + loop $for-loop|0 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load offset=4 - local.get $1 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $5) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + else + i32.const 0 + end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + f64.promote_f32 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + f64.promote_f32 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $3 + f32.ne + br_if $folding-inner0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 + (func $std/array/assertSortedDefault (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $6 - local.get $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11120 + i32.store offset=4 + local.get $0 + i32.const 11120 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $9 - local.get $6 - i32.const 1 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 11856 + call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $3 loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.const 0 + i32.ge_s if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $3 i32.const 2 i32.shl - local.tee $10 - local.get $4 i32.add + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $10 - i32.add - f32.load - f32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if + i32.store + i32.const 4 + global.set $~argumentsLength + local.get $2 local.get $4 - local.get $9 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.add + local.get $3 local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - f32.store - local.get $6 + local.get $1 + i32.load + call_indirect (type $4) + local.set $2 + local.get $3 i32.const 1 - i32.add - local.set $6 - br $for-loop|1 + i32.sub + local.set $3 + br $for-loop|0 end end - loop $for-loop|2 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $3 - i32.le_s + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - local.get $4 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $3 i32.const 2 i32.shl i32.add - f32.load - local.set $8 - i32.const 2 + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 global.set $~argumentsLength - local.get $7 - local.get $8 + local.get $2 local.get $5 + local.get $3 + local.get $0 + local.get $1 i32.load - call_indirect (type $5) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 + call_indirect (type $4) + local.set $2 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + local.set $3 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $3 - i32.xor - local.tee $3 - i32.gt_s - local.get $2 + local.get $0 + i32.load offset=12 + local.tee $5 local.get $3 + local.get $5 i32.lt_s - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 i32) + select + local.set $3 + local.get $4 local.get $1 - local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $5 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $5 + local.get $1 + local.get $5 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl + i32.add + local.get $4 local.get $2 - local.get $1 - i32.sub - i32.const 1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $5 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $5 + local.get $2 + local.get $5 + i32.lt_s + select + end + local.tee $2 + i32.const 2 + i32.shl i32.add - local.tee $6 local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $5 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $5 + local.get $3 + local.get $5 + i32.lt_s + select + end + local.get $2 i32.sub - i32.const 1 - i32.and + local.tee $2 + local.get $5 + local.get $1 i32.sub - local.get $6 - i32.const 1 - i32.and - local.get $3 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s select + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.ge_s + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load offset=8 - local.tee $7 - local.set $5 - local.get $3 - f64.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $7 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.le_s - if - local.get $4 - local.set $5 - local.get $7 - local.set $4 - end - local.get $6 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $8 - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $4 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $7 - f64.store offset=16 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store offset=16 - loop $while-continue|2 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $8 - f64.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $8 - local.get $4 - f64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store offset=8 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $for-loop|0 + i32.const 1344 + i32.const 1104 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - i32.eq + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $1 - return + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - loop $while-continue|0 - local.get $2 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.gt_s - if (result i32) - local.get $0 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load offset=8 - local.get $6 - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - local.set $4 - local.get $6 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $6 - local.get $4 - f64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load offset=8 - local.get $1 - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return end - local.get $3 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $5 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $8 - local.get $5 + global.set $~lib/memory/__stack_pointer i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 + ) + (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $9 - local.get $4 - i32.add - local.get $0 - local.get $9 - i32.add - f64.load - f64.store - br $for-loop|0 - end + select end - loop $for-loop|1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 local.get $3 - local.get $5 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 i32.gt_s - if - local.get $4 - local.get $8 - local.get $5 - i32.sub - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - f64.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 + select + else + local.get $2 local.get $3 - i32.le_s - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - else - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end + local.get $2 + local.get $3 + i32.lt_s + select end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 + local.get $1 + i32.sub local.tee $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u + i32.const 0 local.get $2 - i64.xor + i32.const 0 + i32.gt_s + select local.tee $2 - local.get $1 - i64.reinterpret_f64 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray local.tee $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $3 - i64.xor - local.tee $3 - i64.gt_s - local.get $2 + i32.store local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - local.get $3 + i32.const 2 + i32.shl + i32.add local.get $2 - local.get $1 - i32.sub - i32.const 1 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $5 + global.set $~lib/memory/__stack_pointer local.get $3 + ) + (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $7 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - local.get $7 - i32.ge_s + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 i32.const 2 i32.shl i32.add - local.tee $3 - i32.load offset=4 - local.tee $6 - local.set $5 - local.get $3 i32.load - local.set $3 - i32.const 2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 + local.get $2 + local.get $0 + local.get $1 i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + call_indirect (type $1) if - local.get $3 - local.set $5 - local.get $6 - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end - local.get $7 + local.get $2 i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store offset=8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - local.get $7 - i32.const 2 - i32.add - local.set $7 + local.set $2 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 local.get $2 - i32.eq + local.get $3 + call $~lib/array/Array#copyWithin + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $1 - return + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $1 - i32.const 2 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 i32.shl i32.add - i32.load + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + call $~lib/array/Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 + ) + (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 i32.add + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 local.tee $4 i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.shr_u + i32.gt_u if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.set $2 - loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.set $1 + local.get $2 + if + i32.const 1073741820 + local.get $4 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 local.get $1 local.get $2 - i32.lt_s + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$653 + local.get $3 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store + local.get $4 local.get $1 - i32.const 1 - i32.add - local.set $1 + i32.store offset=16 local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub local.set $2 - br $while-continue|1 + br $__inlined_func$~lib/rt/itcms/__renew$653 end - end - else - loop $while-continue|2 - local.get $2 + local.get $1 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub + i32.load offset=12 + call $~lib/rt/itcms/__new local.tee $2 - i32.const 2 - i32.shl - local.tee $8 + local.get $3 + local.get $1 local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 + i32.load offset=16 + local.tee $4 + local.get $1 + local.get $4 + i32.lt_u + select + memory.copy end - end - loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.ne if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.add local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 + local.get $2 i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $4 + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $0) i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $8 - i32.store - local.get $2 + global.set $~lib/memory/__stack_pointer i32.const 1 - i32.add - local.set $2 + return end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + local.set $2 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 + (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - local.get $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end local.get $2 - local.get $1 - i32.sub - i32.const 1 + local.get $3 i32.add - local.tee $4 local.get $3 - i32.sub i32.const 1 - i32.and i32.sub - local.get $4 - i32.const 1 - i32.and + local.get $2 + local.get $2 local.get $3 + i32.ge_s select - i32.add - local.set $6 - loop $for-loop|0 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 local.get $2 - local.get $6 + i32.const 0 i32.ge_s if local.get $0 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add - local.tee $3 - i32.load offset=4 - local.tee $5 - local.set $4 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $5 - i32.const 10848 i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + local.get $1 + i32.eq if - local.get $3 - local.set $4 - local.get $5 - local.set $3 - end - local.get $6 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $3 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $7 - i32.store offset=8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $5 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $4 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $7 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - end + i32.store offset=4 local.get $0 - local.get $5 + i32.load offset=4 + local.get $2 i32.const 2 i32.shl i32.add - local.get $4 - i32.store offset=4 - local.get $6 - i32.const 2 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $3) + local.get $2 + i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $1 - return + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.store local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - local.get $4 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end + i32.load offset=12 + local.set $3 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $5 - local.get $4 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - local.get $3 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select i32.lt_s if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $7 - local.get $4 - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $4 - local.get $6 - local.get $5 - i32.sub - i32.const 2 - i32.shl - i32.add + i32.store offset=4 local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 - i32.const 2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 global.set $~argumentsLength - local.get $6 - local.get $7 - i32.const 10848 + local.get $2 + local.get $0 + local.get $1 i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s + call_indirect (type $1) + i32.eqz if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $2 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer + i32.const 0 + return end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + local.set $2 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u + (func $~lib/array/Array#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - global.get $~lib/math/random_seeded - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i64.const -7046029254386353131 - call $~lib/builtins/seed - i64.reinterpret_f64 - local.tee $0 - local.get $0 - i64.eqz - select - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 + i32.const 48992 + i32.const 49040 i32.const 1 - global.set $~lib/math/random_seeded + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/math/random_state0_64 - local.set $1 - global.get $~lib/math/random_state1_64 - local.tee $0 - global.set $~lib/math/random_state0_64 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 local.get $1 - i64.const 23 - i64.shl - i64.xor - local.tee $1 + i32.const 0 + i32.store local.get $1 - i64.const 17 - i64.shr_u - i64.xor - local.get $0 - i64.xor - local.get $0 - i64.const 26 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 - local.get $0 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - f64.reinterpret_i64 - f64.const -1 - f64.add - ) - (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + i32.store offset=4 local.get $1 i32.const 0 - i32.lt_s - local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 1056 + i32.const 1104 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 local.get $0 - local.get $2 - i32.const 1 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 i32.shl - i32.add - local.set $0 + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 local.get $1 + local.get $2 + i32.store local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $0 local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 10 - i32.lt_u - if + ) + (func $std/array/assertSorted (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:length + local.set $3 + block $__inlined_func$std/array/isSorted$658 (result i32) + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted$658 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer return end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 + i32.sub + ) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + if + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 7724 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7712 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $0 + select + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 - call $~lib/util/number/utoa32_dec_lut + local.tee $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store local.get $0 - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $2 - local.get $1 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 local.get $3 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 - local.get $2 - i64.and - local.set $8 + i32.add local.get $2 local.get $1 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else + call $~lib/util/number/utoa32_dec_lut + local.get $0 + if local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.const 45 + i32.store16 end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - local.set $6 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $5 - local.get $6 - i32.or - if + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $4 - local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add - local.tee $1 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 13392 - i32.add - i64.load32_u - local.get $2 - i64.shl - local.set $2 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i64.sub - local.get $2 - i64.ge_u + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and - if (result i32) - local.get $9 - local.get $1 + i32.ne + if + local.get $0 local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 + i32.const -4 + i32.and local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u i32.or - else + i32.store offset=4 i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 48960 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $7 - i32.const 1 - i32.sub - local.set $7 local.get $1 - local.get $2 - i64.add - local.set $1 - br $while-continue|3 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - local.get $7 - i32.store16 - local.get $5 - return + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - br $while-continue|0 + global.get $~lib/rt/itcms/visitCount + return end - end - loop $while-continue|4 - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul - local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.wrap_i64 - i32.const 65535 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 13392 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $1 - local.get $8 - i64.gt_u - local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 48960 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - local.get $0 - local.get $7 - i32.store16 - local.get $5 + i32.const 0 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) - local.get $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - local.get $1 + i32.const 48992 + i32.const 49040 i32.const 1 - i32.shl + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $0 + local.get $2 + i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.tee $2 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.tee $0 + i32.lt_s + if + local.get $2 + local.get $4 i32.add - i32.const 3145774 - i32.store local.get $1 - i32.const 2 - i32.add - return + local.get $0 + local.get $2 + i32.sub + memory.fill end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 + local.get $0 + i32.load offset=12 + local.tee $0 i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$139 + local.get $1 + i32.eqz + local.get $1 + i32.const -1 + i32.eq + i32.or + if + local.get $0 + local.get $2 + i32.gt_s if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + memory.fill + end + br $__inlined_func$~lib/util/bytes/FILL$139 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add local.get $1 + i32.store + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end - local.get $0 - local.get $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#splice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 i32.const 0 - i32.gt_s - i32.and - if (result i32) + i32.ge_s + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 i32.const 2 + i32.shl i32.add + i32.load + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 + i32.store + i32.const 3 + global.set $~argumentsLength local.get $2 - i32.sub - i32.const 1 - i32.shl - memory.copy local.get $0 - i32.const 46 - i32.store16 local.get $1 - i32.const 1 - i32.add - else - local.get $3 - i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) + (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - local.get $1 - f64.const 0 - f64.lt + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray local.tee $3 - if (result f64) + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 + i32.store offset=4 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $5 + call $~lib/array/Array#push + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 1 - local.get $5 - select - i32.const 1075 - i32.sub - local.tee $9 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.get $2 - i64.const 4503599627370495 - i64.and - local.get $5 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 local.tee $2 - i64.const 1 - i64.shl - i64.const 1 - i64.add + local.get $3 + i32.add local.tee $4 - i64.clz - i32.wrap_i64 - local.tee $10 - i32.sub - local.set $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 224 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $4 - local.get $10 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $2 - local.get $2 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $10 - i32.sub - local.get $5 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $5 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_sat_f64_s - local.tee $5 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $5 - f64.convert_i32_s + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + local.tee $0 + memory.copy + global.get $~lib/memory/__stack_pointer local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 + i32.store + local.get $0 + local.get $5 i32.add - local.tee $5 - i32.const 3 + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 2 i32.shl - local.tee $9 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - global.set $~lib/util/number/_K - local.get $9 - i32.const 12520 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $5 - i32.const 1 + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 143 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 i32.shl - i32.const 13216 i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $2 - local.get $2 - i64.clz - i64.shl - local.tee $2 - i64.const 4294967295 - i64.and - local.set $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $6 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $7 - global.get $~lib/util/number/_frc_plus - local.tee $4 - i64.const 4294967295 - i64.and - local.set $13 - local.get $4 - i64.const 32 - i64.shr_u - local.tee $4 - local.get $12 - i64.mul - local.get $12 - local.get $13 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $8 - global.get $~lib/util/number/_frc_minus - local.tee $14 - i64.const 4294967295 - i64.and - local.set $15 - local.get $14 - i64.const 32 - i64.shr_u - local.tee $14 - local.get $12 - i64.mul - local.get $12 - local.get $15 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 local.get $3 - i32.const 1 - i32.shl + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#fill (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add + local.get $0 + i32.load offset=12 + local.tee $0 + i32.add local.get $2 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add + local.get $0 + local.get $0 local.get $2 - local.get $4 - i64.mul - local.get $8 - i64.const 32 - i64.shr_u - i64.add + i32.gt_s + select local.get $2 - local.get $13 - i64.mul - local.get $8 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $4 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + local.get $3 i32.add - i32.const -64 - i32.sub - local.get $4 - local.get $2 - local.get $14 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $15 - i64.mul - local.get $12 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub local.get $3 - call $~lib/util/number/genDigits + local.get $0 + local.get $0 local.get $3 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify + i32.gt_s + select local.get $3 - i32.add - ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$148 local.get $1 - f64.const 0 - f64.eq + i32.reinterpret_f32 + i32.eqz if local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne + local.get $2 + i32.gt_s if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const 0 local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else + local.get $2 + i32.sub + i32.const 2 + i32.shl + memory.fill + end + br $__inlined_func$~lib/util/bytes/FILL$148 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 + f32.store local.get $2 - i32.const 8 + i32.const 1 i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + local.set $2 + br $for-loop|0 end - unreachable end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $1 - i32.extend8_s - local.tee $3 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 i32.lt_s - local.tee $2 if - local.get $3 - i32.const -128 - i32.eq - if - local.get $0 - i64.const 15762813447372845 - i64.store - i32.const 4 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.extend8_s - local.tee $3 - i32.const 10 - i32.lt_u - if + call $~lib/array/Array#constructor + local.tee $2 + i32.store + loop $for-loop|0 local.get $0 - local.get $3 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend8_s - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) local.get $1 - i32.const 100 - i32.lt_u - if (result i32) + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 - i32.const 10 - i32.ge_u + local.get $0 i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else + i32.sub local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add + i32.sub + call $~lib/array/Array#__set local.get $1 - i32.const 100000000 - i32.ge_u + i32.const 1 i32.add + local.set $1 + br $for-loop|0 end end - local.set $3 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $1 local.get $3 - call $~lib/util/number/utoa32_dec_lut local.get $2 - local.get $3 - i32.add - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 - i32.const 65535 + i32.sub + i32.const 1 + i32.add + local.tee $4 + local.get $3 + i32.sub + i32.const 1 i32.and - local.tee $2 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 65535 - i32.and - local.set $1 - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - local.set $2 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $3 - i32.const -32768 - i32.eq - if - local.get $0 - i64.const 15481338470793261 - i64.store - local.get $0 - i32.const 3670070 - i32.store offset=8 - i32.const 6 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end - local.get $0 - local.get $2 + i32.sub + local.get $4 i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $3 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend16_s - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $2 + i32.and local.get $3 + select i32.add - ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i32) - loop $while-continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u + local.set $6 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.ge_s if local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 + local.get $6 + i32.const 2 i32.shl i32.add - local.get $1 - local.get $1 - i64.const 100000000 - i64.div_u - local.tee $1 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 local.tee $3 - i32.const 10000 - i32.rem_u - local.tee $4 - i32.const 100 - i32.div_u + i32.load offset=4 + local.tee $5 + local.set $4 + local.get $3 + i32.load + local.set $3 i32.const 2 - i32.shl - i32.const 7724 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u + global.set $~argumentsLength + local.get $3 + local.get $5 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $4 + local.get $5 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $7 + i32.store offset=8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + end + local.get $0 + local.get $5 i32.const 2 i32.shl - i32.const 7724 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl i32.add local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 - i32.const 100 - i32.div_u + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $7 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + end + local.get $0 + local.get $5 i32.const 2 i32.shl - i32.const 7724 i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u + local.get $4 + i32.store offset=4 + local.get $6 i32.const 2 - i32.shl - i32.const 7724 i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.set $6 + br $for-loop|0 end end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.set $2 - local.get $1 - i64.const 10 - i64.lt_u + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 + i32.const 48992 + i32.const 49040 i32.const 1 - return + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $8 + loop $for-loop|0 + local.get $2 + local.get $8 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load offset=4 + local.tee $5 + i32.store offset=4 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 100000000 - i32.ge_u - i32.add + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + local.tee $3 + i32.store offset=12 end - end - local.set $0 - local.get $2 - local.get $3 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $2 - local.get $1 - local.get $1 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $1 - i64.const 10000000000 - i64.ge_u - i32.add - else + local.get $8 + i32.const 1 + i32.sub + local.set $9 + loop $while-continue|1 local.get $1 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add + local.get $9 + i32.le_s + if + block $while-break|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $5 + local.get $7 + i32.store offset=8 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|1 + end + end end - else - local.get $1 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add + local.get $9 + i32.le_s + if + block $while-break|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $5 + local.get $3 + i32.store offset=4 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|2 + end + end end + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 end - local.tee $0 - call $~lib/util/number/utoa64_dec_lut end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i64.const 0 - i64.lt_s - local.tee $3 - if - local.get $0 - i32.const 45 - i32.store16 - i64.const 0 - local.get $1 - i64.sub - local.set $1 - end - local.get $0 local.get $3 + local.get $2 + local.get $1 + i32.sub i32.const 1 - i32.shl i32.add - local.set $4 - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $4 - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $3 - i32.const 1 - i32.add - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $0 - local.get $4 + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 local.get $2 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $4 - local.get $1 - local.get $1 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $1 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $1 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 end - else - local.get $1 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 local.get $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 end - local.tee $0 - call $~lib/util/number/utoa64_dec_lut end - local.get $0 - local.get $3 - i32.add ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 255 - i32.and - local.tee $2 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 f64) + (local $8 i32) local.get $1 - i32.const 255 - i32.and - local.set $1 - i32.const 3 + local.get $3 + local.get $2 local.get $1 - i32.const 10 - i32.ge_u + i32.sub i32.const 1 i32.add - local.get $1 - i32.const 100 - i32.ge_u + local.tee $6 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $6 + i32.const 1 + i32.and + local.get $3 select - local.set $2 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $std/array/Proxy - block $std/array/Dim - block $~lib/typedarray/Uint8Array - block $std/array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $std/array/Ref $~lib/typedarray/Uint8Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable + i32.add + local.set $6 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.ge_s + if + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load offset=8 + local.tee $7 + local.set $5 + local.get $3 + f64.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $7 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + if + local.get $4 + local.set $5 + local.get $7 + local.set $4 + end + local.get $6 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $8 + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $7 + f64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner4 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store offset=16 + loop $while-continue|2 local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl i32.add - local.set $1 - br $while-continue|0 + local.tee $8 + f64.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $8 + local.get $4 + f64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 end end - br $folding-inner4 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $5 + f64.store offset=8 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~start - global.get $~started - if - return - end + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f32) + (local $6 f32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub i32.const 1 - global.set $~started - call $start:std/array - ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.add + local.tee $7 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $0 - local.get $0 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $3 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and local.get $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 + select i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load offset=4 + local.tee $8 + local.set $6 + local.get $3 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end ) - (func $std/array/Ref#constructor (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -6527,747 +6521,742 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7712 + return + end global.get $~lib/memory/__stack_pointer local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 i32.store + local.get $1 local.get $0 - i32.load offset=12 - local.tee $0 - local.get $2 - i32.add - local.get $2 - local.get $0 - local.get $0 - local.get $2 - i32.gt_s - select local.get $2 - i32.const 0 - i32.lt_s - select - local.tee $2 - local.get $0 - local.get $3 - i32.add - local.get $3 - local.get $0 - local.get $0 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.tee $0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.get $1 - local.get $0 - local.get $2 - i32.sub - memory.fill - end + call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 + i32.load offset=8 + local.set $5 + local.get $1 i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.tee $4 if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - block $folding-inner1 - block $folding-inner0 - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - br_if $folding-inner0 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|0 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.rotl + i32.and + i32.store end - br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - i32.const 2147483647 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $0 + local.get $1 + i32.const 4 i32.add - local.get $2 - local.get $0 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - local.get $3 - local.get $0 - local.get $0 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$139 - local.get $1 - i32.eqz - local.get $1 - i32.const -1 - i32.eq - i32.or - if - local.get $0 - local.get $2 - i32.gt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $0 - local.get $2 - i32.sub - i32.const 2 - i32.shl - memory.fill - end - br $__inlined_func$~lib/util/bytes/FILL$139 - end - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $3 + i32.const 2 + i32.and if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 + local.get $2 + i32.const 2 + i32.or i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + local.get $4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - call $~lib/array/Array#get:length + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $3 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - block $folding-inner1 - block $folding-inner0 - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - i32.const 2147483647 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.store offset=4 local.get $1 - local.get $2 local.get $3 - call $~lib/array/Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#fill (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.store offset=8 + local.get $3 if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $5 + i32.const 4 + i32.shl local.get $2 - local.get $0 - i32.load offset=12 - local.tee $0 i32.add - local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 local.get $0 local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store local.get $0 - local.get $3 + local.get $5 + i32.const 2 + i32.shl i32.add - local.get $3 + local.tee $0 local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$148 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.reinterpret_f32 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$731 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 i32.eqz if local.get $0 - local.get $2 - i32.gt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.const 0 - local.get $0 - local.get $2 - i32.sub - i32.const 2 - i32.shl - memory.fill - end - br $__inlined_func$~lib/util/bytes/FILL$148 - end - loop $for-loop|0 + i32.load offset=8 + i32.eqz local.get $0 - local.get $2 - i32.gt_s + i32.const 48960 + i32.lt_u + i32.and + i32.eqz if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 0 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$731 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 16000 + i32.load + i32.gt_u + if + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 16004 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 local.get $0 - i32.store + local.get $1 + i32.store offset=8 local.get $1 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $std/array/Proxy + block $std/array/Dim + block $~lib/typedarray/Uint8Array + block $std/array/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $std/array/Ref $~lib/typedarray/Uint8Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end @@ -7275,156 +7264,334 @@ local.get $0 i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (func $~lib/math/NativeMath.random (result f64) + (local $0 i64) + (local $1 i64) + global.get $~lib/math/random_seeded + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 + i64.const -7046029254386353131 + call $~lib/builtins/seed + i64.reinterpret_f64 + local.tee $0 + local.get $0 + i64.eqz + select + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~lib/math/random_seeded end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + global.get $~lib/math/random_state0_64 + local.set $1 + global.get $~lib/math/random_state1_64 + local.tee $0 + global.set $~lib/math/random_state0_64 + local.get $1 + local.get $1 + i64.const 23 + i64.shl + i64.xor + local.tee $1 + local.get $1 + i64.const 17 + i64.shr_u + i64.xor local.get $0 - i32.store + i64.xor local.get $0 - call $~lib/array/Array#get:length - local.set $4 + i64.const 26 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + local.get $0 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + f64.reinterpret_i64 + f64.const -1 + f64.add + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner1 - block $folding-inner0 - local.get $1 - call $~lib/array/Array#get:length - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#toString + else + i32.const 11568 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + end + i32.const 11568 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $2 loop $for-loop|0 - local.get $2 - local.get $4 + local.get $1 + local.get $5 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.tee $3 local.get $3 - f32.ne - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.tee $3 - local.get $3 - f32.ne - else - i32.const 0 - end - i32.eqz + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store + local.get $6 if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/array/Array#__get - f64.promote_f32 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - f64.promote_f32 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - i32.ne - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 + call $~lib/array/Array#toString + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 local.get $0 - i32.store + local.get $6 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $3 - f32.ne - br_if $folding-inner0 + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end - br $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/array/Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 48992 + i32.const 49040 + i32.const 1 i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7439,383 +7606,341 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + if (result i32) + local.get $5 + i32.load offset=12 + else + i32.const 0 end - i32.const 0 + local.get $2 + i32.add local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 2147483647 - local.set $3 end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 local.get $2 - local.get $3 - call $~lib/array/Array#fill + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 16 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=8 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 local.get $0 - i32.load - local.tee $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $6 i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $6 i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_s - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $3 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.set $1 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $2 + loop $for-loop|1 local.get $2 + local.get $4 + i32.lt_s if - i32.const 1073741820 - local.get $4 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $1 - end - block $__inlined_func$~lib/rt/itcms/__renew$653 local.get $3 - i32.const 20 - i32.sub - local.tee $4 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u + local.tee $5 if - local.get $4 local.get $1 - i32.store offset=16 - local.get $3 - local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$653 + local.get $6 + i32.add + local.get $5 + i32.load offset=4 + local.get $5 + i32.load offset=12 + i32.const 2 + i32.shl + local.tee $5 + memory.copy + local.get $1 + local.get $5 + i32.add + local.set $1 end - local.get $1 - local.get $4 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $3 - local.get $1 - local.get $4 - i32.load offset=16 - local.tee $4 - local.get $1 - local.get $4 - i32.lt_u - select - memory.copy - end - local.get $2 - local.get $3 - i32.ne - if - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 end - local.get $0 - local.get $1 - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - if - i32.const 2640 - i32.const 1104 - i32.const 271 - i32.const 18 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$743 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$743 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + i32.const 48992 + i32.const 49040 i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7837,58 +7962,148 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=12 - i32.ge_u + local.tee $5 + i32.const 1 + i32.gt_u if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 + local.get $5 i32.const 1 - i32.add - local.tee $3 + i32.shr_u + local.set $4 + local.get $5 + i32.const 8 + i32.sub + local.set $6 + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.add + local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + local.tee $7 + i64.load + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $3 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.set $3 + local.get $7 + local.get $2 + local.get $6 + i32.add + local.get $1 + i32.sub + local.tee $7 + i64.load + local.tee $8 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $8 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $8 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $8 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $7 + local.get $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $5 i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 + i32.add + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.add + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7907,52 +8122,70 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 0 local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + local.get $3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 1344 - i32.const 1104 - i32.const 143 - i32.const 33 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 11856 + call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7967,79 +8200,46 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=12 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - i32.load offset=12 - local.tee $2 + local.get $2 local.get $3 - i32.add - local.tee $4 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 224 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $5 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - local.tee $0 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $0 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -8063,114 +8263,110 @@ i32.store local.get $0 i32.load offset=4 - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $3 local.get $0 i32.load offset=12 - local.tee $5 - local.get $3 - local.get $5 - i32.lt_s - select - local.set $3 - local.get $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $5 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $5 - local.get $1 - local.get $5 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $5 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $5 - local.get $2 - local.get $5 - i32.lt_s - select - end - local.tee $2 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $5 - i32.add - local.tee $3 - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $5 - local.get $3 - local.get $5 - i32.lt_s - select + local.tee $4 + i32.const 1 + i32.gt_u + if + local.get $4 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 2 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + i32.const 1 + i32.add + local.get $3 + i32.lt_u + if + local.get $2 + local.get $5 + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + local.set $7 + local.get $6 + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + i32.store + local.get $6 + local.get $7 + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.set $6 + local.get $5 + local.get $2 + local.get $4 + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + i32.store16 + local.get $5 + local.get $6 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end end - local.get $2 - i32.sub - local.tee $2 - local.get $5 - local.get $1 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - i32.const 2 - i32.shl - memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -8189,125 +8385,41 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $3 - end global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#copyWithin - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store - block $folding-inner1 - block $folding-inner0 - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $2 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.get $4 - i32.ne - br_if $folding-inner0 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1 ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8322,53 +8434,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.tee $2 - i32.const 1 - call $~lib/array/ensureCapacity + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 4 - i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - memory.copy - local.get $3 - local.get $1 - i32.store + i32.load offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 - local.get $2 - i32.store offset=12 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#map (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8386,321 +8482,278 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=12 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 + local.tee $3 i32.const 2 i32.const 4 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store - local.get $0 + local.get $4 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.const 2 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 + local.set $4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $3 + local.get $5 + i32.lt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + i32.const 2 + i32.shl + local.tee $5 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.add + local.get $6 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - i32.const 2147483647 - local.set $2 end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#slice - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $5 - i32.const 1 - i32.gt_u - if - local.get $5 - i32.const 1 - i32.shr_u - local.set $4 - local.get $5 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub - local.set $6 - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.add - local.get $4 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$738 + local.get $0 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s if - local.get $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $7 - i64.load - local.tee $3 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $3 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.set $3 - local.get $7 - local.get $2 + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$738 + end + local.get $7 + i32.eqz + if local.get $6 - i32.add - local.get $1 - i32.sub - local.tee $7 - i64.load - local.tee $8 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $8 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $8 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $8 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - i64.store - local.get $7 - local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - i64.store - local.get $1 + i32.load + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 8 i32.add - local.set $1 - br $while-continue|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$738 end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|1 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $4 - i32.lt_u - if - local.get $1 - local.get $2 - i32.add - local.tee $6 - i32.load8_u - local.set $7 - local.get $6 - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.add - local.tee $6 - i32.load8_u - i32.store8 - local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 11 + i32.add + local.get $7 + i32.mul + i32.const 11 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $4 local.get $7 - i32.store8 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $while-continue|1 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$738 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8715,263 +8768,317 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/array/Array#constructor + local.tee $1 i32.store - local.get $0 - i32.load offset=12 - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $3 - local.get $4 - i32.const 2 - i32.sub - local.set $5 - loop $while-continue|0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 + local.get $2 + call $~lib/math/NativeMath.random + local.get $0 + f64.convert_i32_s + f64.mul + i32.trunc_sat_f64_s + call $~lib/array/Array#__set + local.get $2 i32.const 1 i32.add - local.get $3 - i32.lt_u - if - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - local.set $7 - local.get $6 - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - i32.store - local.get $6 - local.get $7 - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - local.set $6 - local.get $5 - local.get $2 - local.get $4 - local.get $1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - i32.store16 - local.get $5 - local.get $6 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|1 - end + local.set $2 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/array/Array#sort + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + local.get $1 + local.set $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - if + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.set $4 + block $__inlined_func$std/array/isSorted<~lib/array/Array>$660 (result i32) + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $1 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $3 + local.get $0 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/array/Array>$660 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1080 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 return end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 100 + i32.eq + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $5 + local.get $3 + i32.add + local.set $6 + local.get $5 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - local.get $3 i32.lt_s if - local.get $0 local.get $2 + i32.const 1 + i32.sub + local.tee $2 i32.const 2 i32.shl + local.tee $7 + local.get $4 + i32.add + local.get $0 + local.get $7 i32.add i32.load - local.get $1 - i32.eq + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $4 + local.get $6 + local.get $5 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store local.get $2 - return + i32.const 1 + i32.add + local.set $2 end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 ) - (func $~lib/array/Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8986,875 +9093,667 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - local.get $2 - local.get $3 - i32.add + i64.const 0 + i64.store offset=8 local.get $3 + local.get $2 i32.const 1 i32.sub + local.tee $2 + i32.add + local.set $7 local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 local.get $2 - i32.const 0 - i32.ge_s + local.get $3 + i32.lt_s if + local.get $4 + local.get $7 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.add local.get $0 local.get $2 i32.const 2 i32.shl i32.add - i32.load - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end + i32.load offset=4 + i32.store local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + (local $7 i32) + (local $8 i32) local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $4 + i32.const 1 i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $5 - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $4 - i32.const 2 - i32.shl - i32.add local.tee $6 - local.get $5 - i32.const 2 - i32.shl - memory.copy - local.get $4 - local.get $5 - i32.add - local.tee $4 local.get $3 - i32.ne - if - local.get $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - memory.copy + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - local.get $5 - i32.sub - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 i32.const 1 i32.sub - br_table $0of1 $1of1 $outOfRange + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end - i32.const 2147483647 - local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - end - local.tee $4 + (local $6 f64) + (local $7 f64) + (local $8 i32) + (local $9 i32) + local.get $2 + i32.const 1 i32.sub - local.tee $1 - local.get $1 - i32.const 2 - i32.gt_s - select - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - i32.const 2 - i32.const 10 - i32.const 0 - call $~lib/rt/__newArray local.tee $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.tee $3 - local.get $4 - i32.const 2 - i32.shl + local.get $3 i32.add - local.tee $6 - local.get $1 - i32.const 2 - i32.shl - memory.copy - local.get $2 - local.get $1 - local.get $4 + local.set $8 + local.get $5 + i32.const 1 i32.add - local.tee $4 - i32.ne - if - local.get $6 - local.get $3 - local.get $4 - i32.const 2 - i32.shl - i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - local.get $4 - i32.sub - i32.const 2 - i32.shl - memory.copy + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $9 + local.get $4 + i32.add + local.get $0 + local.get $9 + i32.add + f64.load + f64.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - local.get $1 - i32.sub - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $4 + local.get $8 + local.get $5 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 6416 - i32.const 1104 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $6 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.tee $6 + local.get $3 i32.add - i32.load - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.set $9 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + local.set $2 + loop $for-loop|0 local.get $1 - i32.const 0 + local.get $2 i32.lt_s if - i32.const 1344 - i32.const 1104 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f32.load + f32.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 + loop $for-loop|1 local.get $3 - local.get $4 - i32.lt_s - select - i32.lt_s + local.get $6 + i32.gt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add local.get $0 - i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + local.get $4 local.get $2 i32.const 2 i32.shl i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 + f32.load + local.set $8 + i32.const 2 global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 + local.get $7 + local.get $8 + local.get $5 i32.load - call_indirect (type $1) + call_indirect (type $6) + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $7 + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store local.get $2 - return + i32.const 1 + i32.add + local.set $2 end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 ) - (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 100 i32.eq - ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load local.get $0 - i32.const 100 - i32.eq - ) - (func $~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 + local.get $1 i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength + i32.add + local.tee $3 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - local.get $0 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 local.get $1 - i32.load - call_indirect (type $1) + local.get $2 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 local.get $2 - return + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end + end + else + loop $while-continue|2 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $3 ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9872,596 +9771,608 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - ) - (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.load + local.tee $5 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $5 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $5 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.tee $5 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $1 + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 3 - i32.lt_s + local.get $4 ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - local.get $0 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 local.get $1 - i32.load - call_indirect (type $1) + local.get $2 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 i32.const 1 - return + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end + end + else + loop $while-continue|2 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $4 ) - (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + local.get $1 local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.eq if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $1 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f64.load local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 i32.gt_s - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $3) + loop $while-continue|0 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.eqz - if - loop $for-loop|0 local.get $3 - i32.const 4 - i32.lt_s + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 31 + i32.shr_u + else + i32.const 0 + end if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|0 + br $while-continue|0 end end - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 100 + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + local.set $4 + local.get $6 + local.get $0 local.get $2 - local.get $3 - i32.const 100 + i32.const 3 + i32.shl i32.add - call $~lib/array/Array#push - local.get $3 + local.tee $6 + f64.load + f64.store + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|1 + local.set $1 + local.get $6 + local.get $4 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end end - i32.const 0 - local.set $3 - loop $for-loop|2 + else + loop $while-continue|2 + local.get $2 local.get $3 - i32.const 100 - i32.lt_s + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.ge_s + else + i32.const 0 + end if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|2 - end - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $3 - i32.const 200 - i32.add - call $~lib/array/Array#push - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 + br $while-continue|2 end end end + local.get $3 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) local.get $1 - i32.const 2 + local.get $2 i32.eq - local.get $0 - i32.const 202 - i32.ne - i32.and if - i32.const 0 - i32.const 1552 - i32.const 767 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $std/array/i + f32.load local.get $0 + local.get $1 + i32.const 1 i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $4 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $6) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $6) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) - (func $~lib/array/Array#map (param $0 i32) (param $1 i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10478,3198 +10389,1612 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - local.set $4 - loop $for-loop|0 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + local.get $0 + local.get $1 + i32.eq + i32.or + i32.or + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $2 - local.get $3 local.get $0 - i32.load offset=12 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.tee $5 - local.get $3 - local.get $5 - i32.lt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $2 - i32.const 2 - i32.shl - local.tee $5 - local.get $0 - i32.load offset=4 + local.get $4 + i32.or + i32.eqz + br_if $folding-inner0 + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - local.set $6 + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $5 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $5 + i32.const 8 i32.add - local.get $6 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - i32.store - local.get $2 + global.set $~lib/memory/__stack_pointer i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $4 + local.get $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.tee $2 + i32.const 4 + i32.ge_u + if (result i32) + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if + local.get $0 + i32.load16_u + local.tee $3 + local.get $1 + i32.load16_u + local.tee $6 + i32.ne + if + local.get $3 + local.get $6 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 end + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + local.get $5 + i32.sub + local.get $0 + select + return end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 255 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 255 + i32.and + local.set $1 + i32.const 3 + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 100 + i32.ge_u + select + local.set $2 local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + i64.const 10 + i64.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - if - global.get $~lib/memory/__stack_pointer + local.set $2 + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) local.get $3 - i32.store offset=4 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else local.get $3 - local.get $5 - call $~lib/array/Array#push + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $0 + local.get $2 + local.get $3 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $2 + local.get $1 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $0 ) - (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 10 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 100 - call $~lib/array/Array#push - global.get $std/array/i local.get $0 - i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut local.get $0 - i32.const 2 - i32.ge_s ) - (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 i32.const 1 + return + end + local.get $1 + i32.const 65535 + i32.and + local.set $1 + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + local.set $2 + local.get $0 + local.get $1 local.get $2 - i32.store + call $~lib/util/number/utoa32_dec_lut local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.ge_s ) - (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 0 i32.lt_s + local.tee $2 if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $3 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s + i32.const -128 + i32.eq if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i64.const 15762813447372845 + i64.store i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $3 - local.get $0 - local.get $1 - i32.load - call_indirect (type $4) - local.set $2 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + return end + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 local.get $2 - ) - (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 i32.const 1 - call $~lib/array/Array#push - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + local.set $0 local.get $1 - i32.add - ) - (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.extend8_s + local.tee $3 + i32.const 10 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array#pop - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 local.get $1 - i32.add - ) - (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $3 - local.get $0 + i32.extend8_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) local.get $1 - i32.load - call_indirect (type $4) - local.set $2 - local.get $3 + i32.const 10 + i32.ge_u i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut local.get $2 + local.get $3 + i32.add ) - (func $std/array/Dim#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i64.const 0 + i64.lt_s + local.tee $3 + if local.get $0 - return + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 end - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $3 i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i32) - (local $17 f32) - (local $18 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.shl + i32.add + local.set $4 + local.get $1 + i64.const 10 + i64.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $4 + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $3 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 + local.get $1 + i64.const 4294967295 + i64.le_u + if local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - f32.load - local.set $9 - local.get $0 - f32.load offset=4 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store - local.get $0 - f32.load offset=8 - local.set $18 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $18 - local.get $9 - local.get $17 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $18 - local.get $2 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store offset=4 - local.get $0 - local.get $9 - local.get $18 - local.get $1 - select - f32.store offset=8 - end - local.get $0 - f32.load - local.set $9 - local.get $0 - f32.load offset=4 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 + i32.wrap_i64 + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) local.get $2 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store - local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - f32.store offset=4 - br $folding-inner0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 + else local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 - local.get $3 - local.get $4 + i32.const 10000000 i32.lt_u - if - local.get $11 - local.get $3 - i32.const 2 - i32.shl + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u i32.add - local.set $3 - br $for-loop|1 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $13 - global.get $~lib/memory/__stack_pointer + local.set $0 + local.get $4 local.get $2 - i32.store local.get $0 - i32.const 0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $4 local.get $1 - i32.const 1 - i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 i32.add - local.tee $6 - local.get $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 + local.get $1 + i64.const 10000000000 + i64.ge_u i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $14 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $14 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $15 - local.get $11 - i32.add - local.tee $16 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $15 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $16 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $11 + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 i32.add - local.get $3 - i32.store local.get $1 - local.get $12 + i64.const 10000000000000 + i64.ge_u i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 end - end - loop $for-loop|4 + else local.get $1 - if + i64.const 100000000000000000 + i64.lt_u + if (result i32) local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $12 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - end + else local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add end end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort@varargs (param $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 10256 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 10256 - i32.store - end - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.lt_s + local.tee $2 + if local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.const 45 + i32.store16 + i32.const 0 local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $1 end - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.shl + i32.add + local.set $0 + local.get $1 + i32.const 10 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 + local.get $0 + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) local.get $1 - i32.const 48 - i32.le_s - if + i32.const 100 + i32.lt_u + if (result i32) local.get $1 + i32.const 10 + i32.ge_u i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - f64.load - local.set $16 - local.get $0 - f64.load offset=8 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $16 - local.get $16 - local.get $17 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store - local.get $0 - f64.load offset=16 - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $16 - local.get $17 - local.get $1 - select - local.tee $16 - local.get $8 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - local.set $1 - local.get $0 - local.get $8 - local.get $16 - local.get $1 - select - f64.store offset=8 - local.get $0 - local.get $16 - local.get $8 - local.get $1 - select - f64.store offset=16 - end - local.get $0 - f64.load - local.set $8 - local.get $0 - f64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $8 - local.get $8 - local.get $16 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store - local.get $0 - local.get $8 - local.get $16 - local.get $1 - select - f64.store offset=8 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - i32.const 0 + i32.add + else local.get $1 - i32.const 1 - i32.sub - i32.const 0 - call $~lib/util/sort/insertionSort - br $folding-inner0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add end - i32.const 33 + else local.get $1 - i32.clz - i32.sub - local.tee $3 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + local.get $2 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -32768 + i32.eq if - call $~lib/rt/tlsf/initialize + local.get $0 + i64.const 15481338470793261 + i64.store + local.get $0 + i32.const 3670070 + i32.store offset=8 + i32.const 6 + return end - local.get $4 - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $10 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 3 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store local.get $0 + i32.const 45 + i32.store16 i32.const 0 local.get $1 - i32.const 1 i32.sub - local.tee $9 - call $~lib/util/sort/extendRunRight - local.tee $3 + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 i32.const 1 i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $3 + return + end + local.get $1 + i32.extend16_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) local.get $1 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - loop $while-continue|2 - local.get $3 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - local.get $3 - i32.const 1 - i32.add - local.tee $5 - local.get $9 - call $~lib/util/sort/extendRunRight - local.tee $4 - local.get $5 - i32.sub - i32.const 1 - i32.add - local.tee $6 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - local.get $5 - local.get $9 - local.get $5 - i32.const 31 - i32.add - local.tee $4 - local.get $4 - local.get $9 - i32.gt_s - select - local.tee $4 - local.get $6 - call $~lib/util/sort/insertionSort - end - local.get $2 - local.get $5 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $4 - local.get $5 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $6 - loop $for-loop|3 - local.get $1 - local.get $6 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $7 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - local.get $7 - local.get $2 - local.get $3 - local.get $12 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $7 - local.set $2 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $6 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $5 - local.set $2 - local.get $4 - local.set $3 - local.get $6 - local.set $1 - br $while-continue|2 - end + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add end - loop $for-loop|4 + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $2 - local.get $10 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $2 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - local.get $0 - local.get $3 - local.get $2 - local.get $9 - local.get $12 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.set $3 local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) (local $3 i32) - (local $4 i32) + (local $4 i64) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $6 i64) + (local $7 i64) + (local $8 i64) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) + (local $11 i64) + (local $12 i64) (local $13 i64) - (local $14 i32) - (local $15 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + (local $14 i64) + (local $15 i64) + local.get $1 + f64.const 0 + f64.lt + local.tee $3 + if (result f64) + local.get $0 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + else + local.get $1 end - global.get $~lib/memory/__stack_pointer + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 1 + local.get $5 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub + local.get $2 + i64.const 4503599627370495 + i64.and + local.get $5 i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store - local.get $0 - i32.load offset=8 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store offset=4 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $2 - local.get $1 - local.get $1 - local.get $2 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store - local.get $0 - i32.load offset=8 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $3 - select - local.tee $1 - local.get $4 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.set $2 - local.get $0 - local.get $4 - local.get $1 - local.get $2 - select - i32.store offset=4 - local.get $0 - local.get $1 - local.get $4 - local.get $2 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $2 - local.get $1 - local.get $1 - local.get $2 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store - local.get $0 - local.get $1 - local.get $2 - local.get $3 - select - i32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $3 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - local.set $5 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $4 - global.get $~lib/rt/tlsf/ROOT - local.get $5 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $9 - i32.add - local.set $10 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $9 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $11 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $8 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $8 - local.get $8 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $2 - loop $while-continue|2 - local.get $4 - local.get $8 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $5 - local.get $8 - call $~lib/util/sort/extendRunRight - local.tee $3 - local.get $5 - i32.sub - i32.const 1 - i32.add - local.tee $6 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $5 - local.get $8 - local.get $5 - i32.const 31 - i32.add - local.tee $3 - local.get $3 - local.get $8 - i32.gt_s - select - local.tee $3 - local.get $6 - call $~lib/util/sort/insertionSort - end - local.get $2 - local.get $5 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $8 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $12 - i64.div_u - local.get $3 - local.get $5 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $12 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $6 - loop $for-loop|3 - local.get $1 - local.get $6 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $13 - local.get $9 - i32.add - local.tee $14 - i32.load - local.tee $7 - i32.const -1 - i32.ne - if - local.get $10 - local.get $13 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $7 - local.get $2 - local.get $4 - local.get $11 - call $~lib/util/sort/mergeRuns - local.get $14 - i32.const -1 - i32.store - local.get $7 - local.set $2 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $6 - i32.const 2 - i32.shl - local.tee $1 - local.get $9 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $10 - i32.add - local.get $4 - i32.store - local.get $5 - local.set $2 - local.get $3 - local.set $4 - local.get $6 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $2 - local.get $9 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $2 - local.get $10 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - local.get $0 - local.get $3 - local.get $2 - local.get $8 - local.get $11 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $9 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.tee $2 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $4 + i64.clz + i32.wrap_i64 + local.tee $10 + i32.sub + local.set $5 + local.get $4 + local.get $10 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $2 + local.get $2 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $10 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $10 + i32.sub + local.get $5 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $5 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_sat_f64_s + local.tee $5 + local.get $5 + f64.convert_i32_s + local.get $1 + f64.ne i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $5 + i32.const 3 + i32.shl + local.tee $9 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#constructor + global.set $~lib/util/number/_K + local.get $9 + i32.const 12520 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $5 + i32.const 1 + i32.shl + i32.const 13216 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl local.tee $2 - i32.store - loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - local.get $0 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 + i64.const 4294967295 + i64.and + local.set $6 + global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $6 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_plus + local.tee $4 + i64.const 4294967295 + i64.and + local.set $13 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $4 + local.get $12 + i64.mul + local.get $12 + local.get $13 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $8 + global.get $~lib/util/number/_frc_minus + local.tee $14 + i64.const 4294967295 + i64.and + local.set $15 + local.get $14 + i64.const 32 + i64.shr_u + local.tee $14 + local.get $12 + i64.mul + local.get $12 + local.get $15 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $0 + local.get $3 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 local.get $2 - ) - (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $4 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $13 + i64.mul + local.get $8 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $4 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/array/Array#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $~lib/math/NativeMath.random - local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_sat_f64_s - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $4 + local.get $2 + local.get $14 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $15 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $3 + call $~lib/util/number/genDigits + local.get $3 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 ) - (func $std/array/assertSorted (param $0 i32) (param $1 i32) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - block $__inlined_func$std/array/isSorted$658 (result i32) - global.get $~lib/memory/__stack_pointer + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) + local.get $1 + f64.const 0 + f64.eq + if local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 local.get $0 + i32.const 48 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if local.get $1 - call $~lib/array/Array#sort - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - call $~lib/array/Array#get:length - local.set $3 - loop $for-loop|0 + f64.ne + if local.get $0 - local.get $3 - i32.lt_s + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 local.get $0 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + i32.const 45 + i32.store16 local.get $0 - call $~lib/array/Array#__get i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isSorted$658 - end - local.get $0 - i32.const 1 i32.add local.set $0 - br $for-loop|0 end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1080 - i32.const 3 - call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $std/array/assertSortedDefault (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + call $~lib/util/number/dtoa_core end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11120 - i32.store offset=4 - local.get $0 - i32.const 11120 - call $std/array/assertSorted - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - i32.load - i32.sub - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - local.get $1 - local.get $3 + local.get $0 local.get $2 - local.get $1 - i32.sub - i32.const 1 + i32.const 2 + i32.shl i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl i32.and - local.get $3 - select - i32.add - local.set $8 - loop $for-loop|0 + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz local.get $2 - local.get $8 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - local.get $8 + local.get $1 + i32.ctz + local.tee $1 i32.const 2 i32.shl i32.add - local.tee $5 - i32.load - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 i32.load offset=4 - local.tee $5 - i32.store offset=4 - local.get $5 - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $3 - local.tee $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - local.tee $3 - i32.store offset=12 - end - local.get $8 - i32.const 1 - i32.sub - local.set $9 - loop $while-continue|1 - local.get $1 - local.get $9 - i32.le_s - if - block $while-break|1 - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $5 - local.get $7 - i32.store offset=8 - local.get $9 - i32.const 1 - i32.sub - local.set $9 - br $while-continue|1 - end - end - end - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $9 - i32.le_s - if - block $while-break|2 - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $5 - local.get $3 - i32.store offset=4 - local.get $9 - i32.const 1 - i32.sub - local.set $9 - br $while-continue|2 - end - end + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end local.get $0 - local.get $9 - i32.const 2 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 i32.shl i32.add - local.get $6 - i32.store offset=4 - local.get $8 i32.const 2 + i32.shl i32.add - local.set $8 - br $for-loop|0 + i32.load offset=96 + else + i32.const 0 end end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1488 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 - local.get $2 - i32.eq + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 i32.add - global.set $~lib/memory/__stack_pointer local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if return end - global.get $~lib/memory/__stack_pointer - local.get $0 local.get $1 + local.get $4 i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 local.get $1 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - local.tee $4 - i32.const 2 - i32.shl + local.get $3 i32.add - i32.load - local.tee $6 - i32.store offset=4 + local.tee $3 i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 + i32.store + local.get $0 local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $std/array/arr + local.tee $0 if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $5 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $5 - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 10032 + call $~lib/rt/itcms/__visit + global.get $std/array/inputStabArr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/outputStabArr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 2640 + call $~lib/rt/itcms/__visit + i32.const 6416 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 8144 + call $~lib/rt/itcms/__visit + i32.const 9200 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.tee $5 - i32.store offset=8 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - local.tee $1 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $1 - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end + ) + (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 11856 + call $~lib/array/Array<~lib/string/String|null>#join + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13684,161 +12009,223 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.set $7 - local.get $2 - i32.const 1 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $6 - loop $for-loop|0 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 i32.lt_s - if - local.get $6 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$739 + local.get $0 i32.const 1 i32.sub - local.tee $6 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$739 + end + local.get $7 + i32.eqz + if + local.get $6 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$739 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 10 i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 local.get $7 - local.get $2 - i32.sub - i32.const 2 - i32.shl + i32.mul + i32.const 10 i32.add - local.get $0 - local.get $2 - i32.const 2 + local.tee $3 + i32.const 1 i32.shl - i32.add - i32.load offset=4 - i32.store + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 local.get $2 i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $2 - i32.const 2 i32.shl i32.add - i32.load - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 + local.get $3 i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - else local.get $0 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $6 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $6 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$739 end - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $for-loop|2 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13854,441 +12241,626 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + block $__inlined_func$~lib/util/string/joinReferenceArray$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $4 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + br $__inlined_func$~lib/util/string/joinReferenceArray$4 + end + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $3 i32.store offset=4 + i32.const 13632 + else + i32.const 11568 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinReferenceArray$4 + end + i32.const 11568 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11568 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=4 + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 + local.get $5 + local.get $1 i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $4 - local.get $4 - local.get $3 - local.get $2 + i32.shl + i32.add i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $1 - select - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - local.get $1 - select - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $4 - local.get $4 + i32.store local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $1 - select - i32.store offset=4 - local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13632 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 13632 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end local.get $4 - local.get $3 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 11856 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 + end local.get $1 - select - i32.store offset=8 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store + local.get $1 + if global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $3 - i32.store offset=20 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 + local.get $1 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 13632 i32.store offset=12 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $4 - local.get $4 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $1 - select - i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - local.get $3 - local.get $1 - select - i32.store offset=4 - br $folding-inner0 + i32.const 13632 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=8 end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $5 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - local.set $3 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $4 - global.get $~lib/rt/tlsf/ROOT - local.get $3 - call $~lib/rt/tlsf/allocateBlock + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.tee $13 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 i32.add - local.set $12 - loop $for-loop|1 - local.get $5 - local.get $7 - i32.gt_u - if - local.get $13 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $4 + i32.sub + local.tee $1 + local.get $1 + i32.const 2 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.tee $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $1 + i32.const 2 + i32.shl + memory.copy + local.get $2 + local.get $1 + local.get $4 + i32.add + local.tee $4 + i32.ne + if + local.get $6 + local.get $3 + local.get $4 i32.const 2 i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 i32.add - local.set $11 - global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 + local.get $4 i32.sub - local.tee $14 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 + i32.const 2 + i32.shl + memory.copy + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.const 31 - local.get $14 - local.get $14 - i32.const 31 - i32.ge_s - select - local.tee $5 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 - loop $while-continue|2 - local.get $5 - local.get $14 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$740 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - local.get $5 - i32.const 1 + i32.const 8 i32.add - local.tee $4 - local.get $14 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $4 - i32.sub - i32.const 1 + global.set $~lib/memory/__stack_pointer + i32.const 11568 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $8 - i32.const 32 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 local.get $0 - local.get $4 - local.get $14 - local.get $4 - i32.const 31 + local.get $1 + i32.const 1 + i32.shl i32.add - local.tee $3 - local.get $3 - local.get $14 - i32.gt_s - select - local.tee $6 - local.get $8 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $1 - local.get $4 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $14 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $10 - i64.div_u - local.get $4 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $3 - loop $for-loop|3 local.get $3 - local.get $7 - i32.lt_u + local.get $5 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 if - local.get $7 - i32.const 2 + local.get $0 + local.get $1 + i32.const 1 i32.shl - local.tee $9 - local.get $13 i32.add - local.tee $8 - i32.load - local.tee $15 - i32.const -1 - i32.ne - if - local.get $9 - local.get $12 - i32.add - i32.load - i32.const 1 - i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - local.get $15 - local.get $1 - local.get $5 - local.get $11 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $8 - i32.const -1 - i32.store - local.get $15 - local.set $1 - end - local.get $7 + i32.const 11856 + local.get $4 i32.const 1 - i32.sub - local.set $7 - br $for-loop|3 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 end - end - local.get $3 - i32.const 2 - i32.shl - local.tee $7 - local.get $13 - i32.add - local.get $1 - i32.store - local.get $7 - local.get $12 - i32.add - local.get $5 - i32.store - local.get $4 - local.set $1 - local.get $6 - local.set $5 - local.get $3 - local.set $7 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $7 - if - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $13 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $1 - local.get $12 - i32.add - i32.load + local.get $3 i32.const 1 i32.add - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $0 - local.get $3 - local.get $1 - local.get $14 - local.get $11 - local.get $2 - call $~lib/util/sort/mergeRuns + local.set $3 + br $for-loop|0 end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|4 end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$740 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $13 - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.tee $2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 4 + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + memory.copy + local.get $3 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -14323,14 +12895,15 @@ local.get $1 i32.store local.get $1 - call $~lib/util/sort/SORT + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $start:std/array~anonymous|52 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14349,31 +12922,40 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 0 - call $~lib/array/Array#__get - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.sub + local.get $2 + call $~lib/array/Array#lastIndexOf global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -14385,117 +12967,60 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - block $__inlined_func$std/array/isSorted<~lib/array/Array>$660 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - local.get $1 - local.set $0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 1 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/array/Array#get:length - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $5 - local.get $1 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $5 - local.get $1 - call $~lib/array/Array#__get - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $0 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array>$660 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange end + unreachable end + i32.const 10256 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1080 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 10256 + i32.store end global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer return @@ -14507,14 +13032,9 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14529,176 +13049,176 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - local.get $0 - local.get $1 - i32.eq - i32.or - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 i32.const 1 - i32.shr_u - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - local.tee $5 - local.get $4 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $4 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - local.get $5 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $4 - local.get $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.tee $2 - i32.const 4 - i32.ge_u - if (result i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load16_u - local.tee $3 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $3 - local.get $6 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - end - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - local.get $5 - i32.sub - local.get $0 - select - return + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|49 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 i32.add + ) + (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.add ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 100 + i32.gt_s + local.get $0 + select + ) + (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 2 + i32.gt_s + local.get $0 + select + ) + (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + ) + (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.eq + ) + (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.eqz + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/array + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14713,960 +13233,1635 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 11568 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $4 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $3 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $5 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end + local.get $1 + if + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $4 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 local.get $0 - local.get $1 - i32.eq if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add local.get $0 - i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - block $__inlined_func$~lib/util/string/compareImpl$1 (result i32) - local.get $2 - i32.const 4 - i32.ge_u - if (result i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return end + local.get $7 i32.eqz if - loop $do-loop|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq + local.get $0 + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64$485 + local.get $3 + i64.eqz if - local.get $0 - i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $0 + global.set $~lib/memory/__stack_pointer + i32.const 7712 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64$485 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + local.get $3 + local.get $0 + call $~lib/util/number/utoa64_dec_lut end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end + br $folding-inner1 end - loop $while-continue|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 11856 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11852 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 20 + i32.add + local.get $7 + i32.mul + i32.const 20 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add local.get $0 - i32.load16_u - local.tee $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 local.get $1 - i32.load16_u - local.tee $4 - i32.ne if - local.get $3 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl$1 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 11856 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 + local.get $4 + i32.const 1 i32.add - local.set $1 - br $while-continue|1 + local.set $4 + br $for-loop|0 end end - i32.const 0 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $1 ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$736 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - i32.const 20 + i32.const 1 i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 11568 + return + end + local.get $7 i32.eqz if + local.get $0 + f64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 12320 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 12352 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 12384 + i32.const 12432 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12464 + local.get $3 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 12464 + local.get $1 + memory.copy + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/string/String#concat$736 + br $folding-inner1 end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 12288 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12284 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $7 + i32.mul + i32.const 28 + i32.add + local.tee $5 + i32.const 1 + i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store offset=4 - local.get $0 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 12288 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $6 local.get $2 - local.get $3 - memory.copy + i32.const 1 + i32.shl + i32.add local.get $0 - local.get $3 + local.get $7 + i32.const 3 + i32.shl i32.add - local.get $1 - local.get $4 - memory.copy + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if i32.const 48992 i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.le_s - select - i32.const 1 - i32.shl - local.set $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.ge_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - i32.sub - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $3 - i32.eqz - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.eq - i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $3 - i32.add - local.get $2 - memory.copy + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $3 + select + local.tee $1 + local.get $4 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.set $2 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $4 + local.get $2 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $3 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $9 + i32.add + local.set $10 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $9 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 10848 i32.store local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 + local.tee $8 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$738 + if + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store local.get $0 - i32.const 1 - i32.sub - local.tee $7 i32.const 0 + i32.const 31 + local.get $8 + local.get $8 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + loop $while-continue|2 + local.get $4 + local.get $8 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 10848 + i32.store + local.get $0 + local.get $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$738 - end - local.get $7 - i32.eqz - if - local.get $6 - i32.load - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.tee $5 + local.get $8 + call $~lib/util/sort/extendRunRight + local.tee $3 + local.get $5 + i32.sub + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$738 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 11 - i32.add - local.get $7 - i32.mul - i32.const 11 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 + local.tee $6 + i32.const 32 i32.lt_s if + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store local.get $0 - local.get $2 - i32.const 1 - i32.shl + local.get $5 + local.get $8 + local.get $5 + i32.const 31 i32.add + local.tee $3 + local.get $3 + local.get $8 + i32.gt_s + select + local.tee $3 local.get $6 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 + call $~lib/util/sort/insertionSort + end + local.get $2 + local.get $5 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $8 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $12 + i64.div_u + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $12 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $6 + loop $for-loop|3 + local.get $1 + local.get $6 + i32.gt_u if - local.get $0 - local.get $2 - i32.const 1 + local.get $1 + i32.const 2 i32.shl + local.tee $13 + local.get $9 i32.add + local.tee $14 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $10 + local.get $13 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $4 + local.get $11 + call $~lib/util/sort/mergeRuns + local.get $14 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end local.get $1 - local.get $5 i32.const 1 - i32.shl - memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 + i32.sub + local.set $1 + br $for-loop|3 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $1 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $9 + i32.add + local.get $2 i32.store - local.get $0 local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $10 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$738 + local.get $4 + i32.store + local.get $5 + local.set $2 + local.get $3 + local.set $4 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $9 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $10 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $8 + local.get $11 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end + local.get $11 + call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$739 - local.get $0 - i32.const 1 - i32.sub - local.tee $7 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$739 - end - local.get $7 - i32.eqz - if - local.get $6 - i32.load - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$739 - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.le_s + if local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 10 - i32.add - local.get $7 - i32.mul - i32.const 10 - i32.add - local.tee $3 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 - i32.lt_s - if + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $6 + i32.load + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select + i32.store + global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $1 - local.get $3 - i32.lt_s - if + local.get $3 + local.get $1 + select + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select + i32.store offset=4 + local.get $0 + local.get $4 + local.get $3 + local.get $1 + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength local.get $0 + local.get $3 + local.get $4 + local.get $4 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $1 + select i32.store local.get $0 + local.get $4 + local.get $3 local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$739 + select + i32.store offset=4 + br $folding-inner0 end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $7 i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $5 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + local.set $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $3 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 + i32.add + local.set $12 + loop $for-loop|1 + local.get $5 local.get $7 - i32.eqz + i32.gt_u if - local.get $0 - f64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $13 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 i32.store - i32.const 12320 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 12352 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 12384 - i32.const 12432 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 12464 - local.get $3 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 12464 - local.get $1 - memory.copy - end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $14 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 31 + local.get $14 + local.get $14 + i32.const 31 + i32.ge_s + select + local.tee $5 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $7 + i32.const 0 + local.set $1 + loop $while-continue|2 + local.get $5 + local.get $14 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $5 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 12288 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12284 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 - i32.add - local.get $7 - i32.mul - i32.const 28 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 + local.tee $4 + local.get $14 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $6 local.get $4 - local.get $7 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 i32.lt_s if - local.get $6 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.shl - i32.add + i32.store offset=8 local.get $0 local.get $4 - i32.const 3 - i32.shl + local.get $14 + local.get $4 + i32.const 31 i32.add - f64.load - call $~lib/util/number/dtoa_buffered + local.tee $3 + local.get $3 + local.get $14 + i32.gt_s + select + local.tee $6 + local.get $8 local.get $2 - i32.add - local.set $2 - local.get $1 + call $~lib/util/sort/insertionSort + end + local.get $1 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $10 + i64.div_u + local.get $4 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $3 + loop $for-loop|3 + local.get $3 + local.get $7 + i32.lt_u if - local.get $6 - local.get $2 - i32.const 1 + local.get $7 + i32.const 2 i32.shl + local.tee $9 + local.get $13 i32.add - i32.const 12288 - local.get $1 + local.tee $8 + i32.load + local.tee $15 + i32.const -1 + i32.ne + if + local.get $9 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $15 + local.get $1 + local.get $5 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $8 + i32.const -1 + i32.store + local.get $15 + local.set $1 + end + local.get $7 i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 + i32.sub + local.set $7 + br $for-loop|3 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + local.get $3 + i32.const 2 + i32.shl + local.tee $7 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $7 + local.get $12 + i32.add + local.get $5 + i32.store + local.get $4 + local.set $1 + local.get $6 + local.set $5 + local.get $3 + local.set $7 + br $while-continue|2 end - local.get $5 - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 + end + loop $for-loop|4 local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner1 + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $13 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $1 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $3 + local.get $1 + local.get $14 + local.get $11 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $11 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15681,204 +14876,426 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $5 i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $5 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 11568 - local.get $0 - select - return - end - loop $for-loop|0 + i32.store + block $folding-inner0 local.get $1 - local.get $4 - i32.gt_s + i32.const 48 + i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store local.get $3 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u i32.add - local.set $3 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $5 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=12 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $5 + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s if global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $6 + local.get $2 + i32.store + local.get $0 local.get $4 i32.const 1 - i32.shl i32.add - local.get $7 - local.get $7 - i32.const 20 + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u + i32.add local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 i32.const 1 - i32.shl - memory.copy - local.get $4 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 end + end + loop $for-loop|4 local.get $1 if - local.get $6 - local.get $4 - i32.const 1 + local.get $1 + i32.const 2 i32.shl + local.tee $3 + local.get $10 i32.add - local.get $2 + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end local.get $1 i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $4 + i32.sub + local.set $1 + br $for-loop|4 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - if + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $6 - local.get $4 - i32.const 1 - i32.shl + i32.const 4 i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f64) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) + (local $16 f64) + (local $17 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -15897,223 +15314,418 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f64.load + local.set $16 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $16 + local.get $16 + local.get $17 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + f64.load offset=16 + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $16 + local.get $17 + local.get $1 + select + local.tee $16 + local.get $8 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.set $1 + local.get $0 + local.get $8 + local.get $16 + local.get $1 + select + f64.store offset=8 + local.get $0 + local.get $16 + local.get $8 + local.get $1 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $8 + local.get $0 + f64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $8 + local.get $8 + local.get $16 + i32.const 10544 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + local.get $8 + local.get $16 + local.get $1 + select + f64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $3 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $4 + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $10 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 + i32.const 10544 i32.store - block $__inlined_func$~lib/util/string/joinReferenceArray$4 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + call $~lib/util/sort/extendRunRight + local.tee $3 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i32.const 10544 + i32.store local.get $0 - i32.const 1 - i32.sub - local.tee $2 i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $3 + local.get $1 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + loop $while-continue|2 + local.get $3 + local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - br $__inlined_func$~lib/util/string/joinReferenceArray$4 - end - local.get $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $0 + i32.const 10544 i32.store local.get $0 - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 13632 - else - i32.const 11568 - end - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $3 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray$4 - end - i32.const 11568 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11568 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=4 - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|0 - local.get $1 - local.get $2 + local.tee $5 + local.get $9 + call $~lib/util/sort/extendRunRight + local.tee $4 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.tee $6 + i32.const 32 i32.lt_s if global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 local.get $5 - local.get $1 - i32.const 2 - i32.shl + local.get $9 + local.get $5 + i32.const 31 i32.add - i32.load - local.tee $3 - i32.store - local.get $3 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 13632 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 13632 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 - end + local.tee $4 local.get $4 + local.get $9 + i32.gt_s + select + local.tee $4 + local.get $6 + call $~lib/util/sort/insertionSort + end + local.get $2 + local.get $5 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $6 + loop $for-loop|3 + local.get $1 + local.get $6 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 11856 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $3 + local.get $12 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 end - local.get $1 + end + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $2 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $5 + local.set $2 + local.get $4 + local.set $3 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $10 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $11 + i32.add + i32.load i32.const 1 i32.add - local.set $1 - br $for-loop|0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $9 + local.get $12 + call $~lib/util/sort/mergeRuns end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - i32.store - local.get $1 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 13632 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 13632 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f32) + (local $18 f32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -16132,519 +15744,1380 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 11856 - call $~lib/array/Array#join - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + f32.load offset=8 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store offset=4 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $5 + i32.add + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + local.get $1 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$740 + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 - i32.const 1 - i32.sub - local.tee $6 i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$740 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$740 - end - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 - local.get $1 - i32.const 1 - i32.shl + local.get $6 + local.get $10 + local.get $6 + i32.const 31 i32.add - local.get $3 + local.tee $5 local.get $5 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 local.get $1 - i32.add - local.set $1 - local.get $4 + local.get $7 + i32.gt_u if - local.get $0 local.get $1 - i32.const 1 + i32.const 2 i32.shl + local.tee $15 + local.get $11 i32.add - i32.const 11856 - local.get $4 - i32.const 1 - i32.shl - memory.copy + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end local.get $1 - local.get $4 - i32.add + i32.const 1 + i32.sub local.set $1 + br $for-loop|3 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered + end + loop $for-loop|4 local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$740 + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 return end - i32.const 48992 - i32.const 49040 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $2 + i64.xor + local.tee $2 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $3 + i64.xor + local.tee $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_s i32.const 1 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_s i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s + i32.sub ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $2 + i32.eqz + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $0 + local.get $3 i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 i32.sub - local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - return - end - local.get $7 - i32.eqz - if + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) local.get $0 - i64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 2 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 3014704 i32.store - block $__inlined_func$~lib/util/number/utoa64$485 + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 local.get $3 - i64.eqz + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $2 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7712 - local.set $1 - br $__inlined_func$~lib/util/number/utoa64$485 + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 end + end + local.get $1 + local.get $3 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 local.get $3 - i64.const 4294967295 - i64.le_u + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.wrap_i64 - local.tee $0 - i32.const 100000 + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 i32.lt_u if (result i32) local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end + i32.const 10 + i32.ge_u + i32.const 1 + i32.add else local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add end - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end else - global.get $~lib/memory/__stack_pointer - local.get $3 - i64.const 1000000000000000 - i64.lt_u + local.get $0 + i32.const 10000000 + i32.lt_u if (result i32) - local.get $3 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $3 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $3 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $3 - i64.const 10000000000000 - i64.ge_u - i32.add - end + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add else - local.get $3 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end + end + ) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) + local.get $2 + local.get $1 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $3 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + local.tee $11 + local.get $2 + i64.and + local.set $8 + local.get $2 + local.get $1 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end local.get $3 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add + i32.const 1000 + i32.div_u + local.set $6 local.get $3 - i64.const 1000000000000000000 - i64.ge_u - i32.add + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 end - local.tee $0 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 local.get $3 - local.get $0 - call $~lib/util/number/utoa64_dec_lut + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 end - br $folding-inner1 + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 + i32.or + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 end - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 20 - i32.add local.get $7 - i32.mul - i32.const 20 - i32.add - local.tee $5 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 - local.get $4 + i32.sub + local.set $7 + local.get $4 + local.get $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $2 + i64.shl + local.get $8 + i64.add + local.tee $1 + i64.ge_u + if + global.get $~lib/util/number/_K local.get $7 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 13392 + i32.add + i64.load32_u + local.get $2 + i64.shl + local.set $2 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $1 + local.get $9 + i64.lt_u local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 local.get $1 - if - local.get $6 + i64.sub + local.get $2 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 11856 + i64.add + local.tee $8 + i64.gt_u + local.get $9 local.get $1 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 i32.const 1 - i32.shl - memory.copy + i32.sub + local.set $7 local.get $1 local.get $2 - i32.add - local.set $2 + i64.add + local.set $1 + br $while-continue|3 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + return end + br $while-continue|0 + end + end + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $8 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 local.get $5 - local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $11 + i64.and + local.tee $8 + local.get $4 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 13392 + i32.add + i64.load32_u + i64.mul + local.set $1 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|6 + local.get $1 + local.get $8 + i64.gt_u + local.get $4 + local.get $8 + i64.sub + local.get $12 + i64.ge_u + i32.and + if (result i32) + local.get $1 + local.get $8 + local.get $12 + i64.add + local.tee $2 + i64.gt_u + local.get $1 + local.get $8 + i64.sub local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 + local.get $1 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $12 + i64.add + local.set $8 + br $while-continue|6 end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + ) + (func $start:std/array~anonymous|54 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1267 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1269 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std/array~anonymous|52 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if i32.const 48992 i32.const 49040 i32.const 1 @@ -16653,12 +17126,32 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.const 2 + i32.ge_s ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) + (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -16678,221 +17171,62 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store - local.get $0 - i32.const 11856 - call $~lib/array/Array<~lib/string/String|null>#join + local.get $2 + i32.const 100 + call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$743 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$743 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 - end - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - local.get $6 - i32.mul - i32.const 10 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $4 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 11856 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - local.get $2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $0 + ) + (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -16912,247 +17246,158 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i local.get $0 - i32.const 11856 - call $~lib/array/Array#join + i32.add + global.set $std/array/i global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + local.get $0 + f32.convert_i32_s + ) + (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + call $~lib/util/number/itoa32 + ) + (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - local.get $0 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.eqz + if + loop $for-loop|0 + local.get $3 + i32.const 4 i32.lt_s if global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 11568 - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 + local.set $3 + br $for-loop|0 end - local.get $4 - i32.eqz + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + i32.const 100 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $0 + local.get $2 i32.store - local.get $0 - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/array/Array#toString - else - i32.const 11568 - end - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $2 + local.get $3 + i32.const 100 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$5 - end - i32.const 11568 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 11568 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=4 - i32.const 11852 - i32.load - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $6 - call $~lib/array/Array#toString - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 - end - local.get $2 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11856 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 11856 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end + call $~lib/array/Array#push + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - i32.store - local.get $1 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + end + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + i32.const 100 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - call $~lib/array/Array#toString - local.set $1 + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 100 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $0 - local.get $1 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=8 + local.get $2 + i32.store + local.get $2 + local.get $3 + i32.const 200 + i32.add + call $~lib/array/Array#push + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|3 end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 2 + i32.eq + local.get $0 + i32.const 202 + i32.ne + i32.and + if + i32.const 0 + i32.const 1552 + i32.const 767 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17167,129 +17412,96 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - local.get $0 - i32.load offset=4 - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i local.get $0 - i32.load offset=12 - local.set $4 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - if (result i32) - local.get $5 - i32.load offset=12 - else - i32.const 0 - end - local.get $2 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + i32.add + global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=8 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=4 - local.get $0 - local.get $6 i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i local.get $0 - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - if - local.get $1 - local.get $6 - i32.add - local.get $5 - i32.load offset=4 - local.get $5 - i32.load offset=12 - i32.const 2 - i32.shl - local.tee $5 - memory.copy - local.get $1 - local.get $5 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 + i32.const 3 + i32.gt_s ) - (func $start:std/array~anonymous|54 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -17309,63 +17521,125 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.ne + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.lt_s + ) + (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.ge_s + ) + (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 1267 - i32.const 5 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/array/Array#get:length - i32.const 2 - i32.ne + i32.const 3 + i32.lt_s + ) + (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 1269 - i32.const 5 + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.le_s + ) + (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.ge_s ) (func $start:std/array (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) - (local $5 i64) - (local $6 f64) - (local $7 f32) + (local $5 f64) + (local $6 f32) + (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i32) global.get $~lib/memory/__stack_pointer i32.const 444 i32.sub @@ -17416,9 +17690,9 @@ global.set $std/array/arr i32.const 0 call $std/array/Ref#constructor - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 @@ -17435,11 +17709,11 @@ i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 16 @@ -17455,87 +17729,87 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - local.get $2 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=12 - local.get $2 - local.get $9 + local.get $1 + local.get $8 i32.store - local.get $2 - local.get $9 + local.get $1 + local.get $8 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 - local.get $9 + local.get $1 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.eqz if i32.const 0 @@ -17551,30 +17825,30 @@ i32.const 7 i32.const 1696 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1728 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17586,28 +17860,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1760 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17619,27 +17893,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1792 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17651,28 +17925,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1824 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17684,27 +17958,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1856 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17716,28 +17990,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 0 i32.const 7 i32.const 1888 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17754,30 +18028,30 @@ i32.const 8 i32.const 1920 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 1968 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17789,28 +18063,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2016 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17822,27 +18096,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2064 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17854,28 +18128,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2112 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17887,27 +18161,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2160 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17919,28 +18193,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 8 i32.const 2208 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17957,30 +18231,30 @@ i32.const 9 i32.const 2256 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 f32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2304 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -17992,28 +18266,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 f32.const 0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2352 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18025,27 +18299,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 f32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2400 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18057,28 +18331,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 f32.const 2 i32.const -2 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2448 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18090,27 +18364,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 f32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2496 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18122,28 +18396,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 f32.const -1 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2544 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18155,28 +18429,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 f32.const -0 i32.const 0 call $~lib/array/Array#fill@varargs global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 9 i32.const 2592 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $std/array/isArraysEqual i32.eqz if @@ -18189,9 +18463,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -18203,9 +18477,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18219,16 +18493,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 42 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -18243,9 +18517,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 1 i32.ne @@ -18259,9 +18533,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18275,9 +18549,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#pop i32.const 42 i32.ne @@ -18291,9 +18565,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -18305,9 +18579,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18321,16 +18595,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 43 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 1 i32.ne @@ -18344,9 +18618,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18360,9 +18634,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18377,16 +18651,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 44 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -18400,9 +18674,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18416,9 +18690,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18433,9 +18707,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18450,16 +18724,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 45 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -18473,9 +18747,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18489,9 +18763,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18506,9 +18780,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18523,9 +18797,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -18545,22 +18819,22 @@ i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $7 i32.store offset=20 - local.get $8 + local.get $7 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $8 + local.get $7 i32.const 1 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $8 + local.get $7 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -18573,14 +18847,14 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $8 + local.get $7 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -18588,9 +18862,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length if i32.const 0 @@ -18606,12 +18880,12 @@ i32.const 4 i32.const 2688 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#at i32.const 1 @@ -18625,9 +18899,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 3 call $~lib/array/Array#at i32.const 4 @@ -18641,9 +18915,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const -1 call $~lib/array/Array#at i32.const 4 @@ -18657,9 +18931,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const -4 call $~lib/array/Array#at i32.const 1 @@ -18675,26 +18949,26 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $2 + local.tee $1 i32.store offset=32 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 - local.get $2 + local.get $7 + local.get $1 call $~lib/array/Array#concat - local.tee $8 + local.tee $7 i32.store offset=36 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $9 + local.tee $8 i32.store - local.get $9 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18708,9 +18982,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $9 + local.tee $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -18723,9 +18997,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -18738,26 +19012,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 0 i32.const 2 i32.const 4 i32.const 2736 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 call $~lib/array/Array#concat drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $9 + local.tee $8 i32.store - local.get $9 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18770,9 +19044,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18786,9 +19060,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18802,9 +19076,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -18818,35 +19092,35 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 46 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 47 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 - local.get $2 + local.get $7 + local.get $1 call $~lib/array/Array#concat - local.tee $8 + local.tee $7 i32.store offset=36 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $9 + local.tee $8 i32.store - local.get $9 + local.get $8 call $std/array/internalCapacity i32.const 8 i32.ne @@ -18859,9 +19133,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -18874,9 +19148,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length i32.const 5 i32.ne @@ -18889,9 +19163,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -18905,9 +19179,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -18921,9 +19195,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -18937,9 +19211,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 3 call $~lib/array/Array#__get i32.const 46 @@ -18953,9 +19227,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.const 4 call $~lib/array/Array#__get i32.const 47 @@ -18969,15 +19243,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#pop drop global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -18995,12 +19269,12 @@ i32.const 4 i32.const 2768 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -19011,22 +19285,22 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $8 + local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $8 + local.get $1 + local.get $7 call $~lib/array/Array#concat - local.tee $8 + local.tee $7 i32.store offset=36 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -19039,9 +19313,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -19057,32 +19331,32 @@ i32.const 4 i32.const 2800 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 2848 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19100,32 +19374,32 @@ i32.const 4 i32.const 2896 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 1 i32.const 3 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 2944 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19143,32 +19417,32 @@ i32.const 4 i32.const 2992 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3040 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $2 - local.get $8 + local.get $7 + i32.store offset=8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19186,32 +19460,32 @@ i32.const 4 i32.const 3088 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 2 i32.const 2 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3136 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19229,31 +19503,31 @@ i32.const 4 i32.const 3184 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3232 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19271,31 +19545,31 @@ i32.const 4 i32.const 3280 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3328 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19313,31 +19587,31 @@ i32.const 4 i32.const 3376 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3424 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19355,32 +19629,32 @@ i32.const 4 i32.const 3472 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 0 i32.const -2 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3520 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19398,31 +19672,31 @@ i32.const 4 i32.const 3568 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3616 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19440,31 +19714,31 @@ i32.const 4 i32.const 3664 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3712 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19482,31 +19756,31 @@ i32.const 4 i32.const 3760 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 - local.get $2 + local.get $1 i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3808 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19524,32 +19798,32 @@ i32.const 4 i32.const 3856 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=48 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const -4 i32.const -3 call $~lib/array/Array#copyWithin@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 i32.const 4 i32.const 3904 call $~lib/rt/__newArray - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19563,16 +19837,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 42 call $~lib/array/Array#unshift global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -19586,9 +19860,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -19602,9 +19876,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -19619,9 +19893,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -19636,9 +19910,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -19653,9 +19927,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -19670,16 +19944,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 41 call $~lib/array/Array#unshift global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 5 i32.ne @@ -19693,9 +19967,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -19709,9 +19983,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 41 @@ -19726,9 +20000,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -19743,9 +20017,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 43 @@ -19760,9 +20034,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 44 @@ -19777,9 +20051,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 4 call $~lib/array/Array#__get i32.const 45 @@ -19794,7 +20068,7 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -19808,11 +20082,11 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 0 i32.le_s if @@ -19824,34 +20098,34 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.tee $9 + local.tee $8 i32.load - local.get $9 - local.get $9 + local.get $8 + local.get $8 i32.const 4 i32.add - local.get $8 + local.get $7 i32.const 1 i32.sub - local.tee $8 + local.tee $7 i32.const 2 i32.shl - local.tee $11 + local.tee $10 memory.copy - local.get $9 - local.get $11 + local.get $8 + local.get $10 i32.add i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 - local.get $8 + local.get $1 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -19871,9 +20145,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -19887,9 +20161,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -19903,9 +20177,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -19920,9 +20194,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -19937,9 +20211,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -19954,9 +20228,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -19971,9 +20245,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#pop global.set $std/array/i global.get $std/array/i @@ -19989,9 +20263,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -20005,9 +20279,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -20021,9 +20295,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -20038,9 +20312,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -20055,9 +20329,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -20076,33 +20350,33 @@ i32.const 4 i32.const 3952 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=52 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#slice@varargs - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 3 i32.const 2 i32.const 4 i32.const 4000 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20115,29 +20389,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 i32.const 4 call $~lib/array/Array#slice - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 4032 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20150,29 +20424,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 i32.const 5 call $~lib/array/Array#slice - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 4 i32.const 2 i32.const 4 i32.const 4064 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20185,24 +20459,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#slice@varargs - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $8 - local.get $2 + local.get $7 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20215,30 +20489,30 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const -2 call $~lib/array/Array#slice@varargs - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 4112 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20251,29 +20525,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 i32.const -1 call $~lib/array/Array#slice - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 4144 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20286,29 +20560,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const -3 i32.const -1 call $~lib/array/Array#slice - local.tee $8 + local.tee $7 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 4176 call $~lib/rt/__newArray - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 + local.get $7 local.get $8 - local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20321,17 +20595,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const -1 i32.const -3 call $~lib/array/Array#slice - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:length if i32.const 0 @@ -20342,18 +20616,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.const 10 call $~lib/array/Array#slice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -20365,7 +20639,7 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -20379,54 +20653,54 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1 i32.gt_u if - local.get $2 + local.get $1 i32.const 1 i32.shr_u - local.set $9 - local.get $2 + local.set $8 + local.get $1 i32.const 1 i32.sub - local.set $2 + local.set $1 loop $while-continue|0 local.get $4 - local.get $9 + local.get $8 i32.lt_u if - local.get $8 + local.get $7 local.get $4 i32.const 2 i32.shl i32.add - local.tee $10 + local.tee $9 i32.load - local.set $11 - local.get $10 - local.get $8 - local.get $2 + local.set $10 + local.get $9 + local.get $7 + local.get $1 local.get $4 i32.sub i32.const 2 i32.shl i32.add - local.tee $10 + local.tee $9 i32.load i32.store + local.get $9 local.get $10 - local.get $11 i32.store local.get $4 i32.const 1 @@ -20442,9 +20716,9 @@ global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -20458,9 +20732,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $std/array/internalCapacity i32.const 8 i32.ne @@ -20474,9 +20748,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 44 @@ -20491,9 +20765,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -20508,9 +20782,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get i32.const 42 @@ -20525,16 +20799,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 43 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 44 call $~lib/array/Array#push global.get $~lib/memory/__stack_pointer @@ -20549,12 +20823,12 @@ i32.store local.get $4 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=60 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|0 @@ -20563,15 +20837,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20599,20 +20873,20 @@ i32.const 7 i32.const 4240 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=64 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|1 @@ -20621,15 +20895,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20657,20 +20931,20 @@ i32.const 7 i32.const 4272 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=68 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|2 @@ -20679,15 +20953,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20715,20 +20989,20 @@ i32.const 11 i32.const 4320 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=72 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|3 @@ -20737,15 +21011,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20773,20 +21047,20 @@ i32.const 11 i32.const 4368 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=76 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|4 @@ -20795,15 +21069,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -20831,20 +21105,20 @@ i32.const 11 i32.const 4416 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=80 i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.set $4 loop $for-loop|5 @@ -20853,15 +21127,15 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $0 i32.sub @@ -21086,9 +21360,9 @@ i32.const 9 i32.const 4464 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 local.set $0 @@ -21104,10 +21378,10 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store block $__inlined_func$~lib/array/Array#indexOf$714 - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.eqz @@ -21125,17 +21399,17 @@ br $__inlined_func$~lib/array/Array#indexOf$714 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 + local.set $1 loop $while-continue|05 local.get $0 local.get $4 i32.lt_s if - local.get $2 + local.get $1 local.get $0 i32.const 2 i32.shl @@ -21180,9 +21454,9 @@ i32.const 12 i32.const 4496 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 local.set $0 @@ -21198,10 +21472,10 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store block $__inlined_func$~lib/array/Array#indexOf$715 - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.eqz @@ -21219,17 +21493,17 @@ br $__inlined_func$~lib/array/Array#indexOf$715 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 + local.set $1 loop $while-continue|07 local.get $0 local.get $4 i32.lt_s if - local.get $2 + local.get $1 local.get $0 i32.const 3 i32.shl @@ -21553,33 +21827,33 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 4576 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store block $__inlined_func$~lib/array/Array#includes$716 (result i32) - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 4576 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.eqz @@ -21596,24 +21870,24 @@ br $__inlined_func$~lib/array/Array#includes$716 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 + local.set $1 loop $while-continue|09 local.get $0 local.get $4 i32.lt_s if - local.get $2 + local.get $1 local.get $0 i32.const 2 i32.shl i32.add f32.load - local.tee $7 - local.get $7 + local.tee $6 + local.get $6 f32.ne if global.get $~lib/memory/__stack_pointer @@ -21645,33 +21919,33 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + i32.const 3 + i32.const 12 + i32.const 4608 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store block $__inlined_func$~lib/array/Array#includes$717 (result i32) - i32.const 1 - i32.const 3 - i32.const 12 - i32.const 4608 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.eqz @@ -21688,24 +21962,24 @@ br $__inlined_func$~lib/array/Array#includes$717 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $2 + local.set $1 loop $while-continue|011 local.get $0 local.get $4 i32.lt_s if - local.get $2 + local.get $1 local.get $0 i32.const 3 i32.shl i32.add f64.load - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 f64.ne if global.get $~lib/memory/__stack_pointer @@ -21828,9 +22102,9 @@ local.get $0 i32.const 0 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 5 i32.const 2 @@ -21841,7 +22115,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -21862,12 +22136,12 @@ i32.const 4 i32.const 4736 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21894,9 +22168,9 @@ i32.const 0 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -21907,7 +22181,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -21928,12 +22202,12 @@ i32.const 4 i32.const 4848 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21961,9 +22235,9 @@ local.get $0 i32.const 2 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 3 i32.const 2 @@ -21974,7 +22248,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -21995,12 +22269,12 @@ i32.const 4 i32.const 4976 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22027,9 +22301,9 @@ i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 i32.const 2 @@ -22040,7 +22314,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22061,12 +22335,12 @@ i32.const 4 i32.const 5088 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22093,9 +22367,9 @@ i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22106,7 +22380,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22127,12 +22401,12 @@ i32.const 4 i32.const 5200 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22160,9 +22434,9 @@ local.get $0 i32.const -1 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22173,7 +22447,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22194,12 +22468,12 @@ i32.const 4 i32.const 5328 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22227,9 +22501,9 @@ local.get $0 i32.const -2 call $~lib/array/Array#splice@varargs - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 2 i32.const 2 @@ -22240,7 +22514,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22261,12 +22535,12 @@ i32.const 4 i32.const 5456 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22293,9 +22567,9 @@ i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22306,7 +22580,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22327,12 +22601,12 @@ i32.const 4 i32.const 5568 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22359,9 +22633,9 @@ i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 1 i32.const 2 @@ -22372,7 +22646,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22393,12 +22667,12 @@ i32.const 4 i32.const 5696 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22425,9 +22699,9 @@ i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22438,7 +22712,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22459,12 +22733,12 @@ i32.const 4 i32.const 5824 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22491,9 +22765,9 @@ i32.const 1 i32.const -2 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22504,7 +22778,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22525,12 +22799,12 @@ i32.const 4 i32.const 5952 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22557,9 +22831,9 @@ i32.const 4 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22570,7 +22844,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22591,12 +22865,12 @@ i32.const 4 i32.const 6080 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22623,9 +22897,9 @@ i32.const 7 i32.const 0 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22636,7 +22910,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22657,12 +22931,12 @@ i32.const 4 i32.const 6208 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22689,9 +22963,9 @@ i32.const 7 i32.const 5 call $~lib/array/Array#splice - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 0 i32.const 2 @@ -22702,7 +22976,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $4 i32.const 0 call $std/array/isArraysEqual @@ -22723,12 +22997,12 @@ i32.const 4 i32.const 6336 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22755,12 +23029,12 @@ local.get $0 i32.const 1 call $~lib/array/Array#splice - local.tee $2 + local.tee $1 i32.store offset=96 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length if i32.const 0 @@ -22790,40 +23064,40 @@ i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=100 - local.get $2 + local.get $1 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 3 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 3 i32.const 4 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 4 i32.const 5 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.store offset=92 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#splice local.tee $0 @@ -22888,9 +23162,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 3 i32.ne @@ -22903,9 +23177,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get local.set $0 @@ -22925,9 +23199,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.set $0 @@ -22947,9 +23221,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get local.set $0 @@ -22975,27 +23249,27 @@ i32.const 13 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=104 - local.get $2 + local.get $1 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 0 call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 2 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.store offset=108 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 @@ -23009,9 +23283,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=12 local.tee $4 i32.const 0 @@ -23019,88 +23293,88 @@ i32.const 0 i32.le_s select - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 1 local.get $4 - local.get $8 + local.get $7 i32.sub - local.tee $9 - local.get $9 + local.tee $8 + local.get $8 i32.const 1 i32.gt_s select - local.tee $9 + local.tee $8 i32.const 0 - local.get $9 + local.get $8 i32.const 0 i32.gt_s select - local.tee $9 + local.tee $8 i32.const 2 i32.const 13 i32.const 0 call $~lib/rt/__newArray - local.tee $10 + local.tee $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.tee $11 - local.get $8 + local.tee $10 + local.get $7 i32.const 2 i32.shl i32.add - local.tee $12 - local.get $9 + local.tee $11 + local.get $8 i32.const 2 i32.shl memory.copy + local.get $7 local.get $8 - local.get $9 i32.add - local.tee $8 + local.tee $7 local.get $4 i32.ne if - local.get $12 local.get $11 - local.get $8 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add local.get $4 - local.get $8 + local.get $7 i32.sub i32.const 2 i32.shl memory.copy end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 local.get $4 - local.get $9 + local.get $8 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=112 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:length i32.const 1 i32.ne @@ -23113,10 +23387,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.const 0 call $~lib/array/Array#__get local.tee $0 @@ -23147,9 +23421,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -23162,9 +23436,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get if @@ -23176,10 +23450,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.tee $0 @@ -24074,9 +24348,9 @@ if global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#pop drop local.get $0 @@ -24117,7 +24391,7 @@ global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 9296 @@ -24137,74 +24411,74 @@ i64.const 0 i64.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 2 i32.const 16 i32.const 0 call $~lib/rt/__newArray - local.tee $9 + local.tee $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load offset=4 - local.set $10 + local.set $9 i32.const 0 local.set $4 loop $for-loop|012 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store local.get $4 - local.get $8 - local.get $2 + local.get $7 + local.get $1 i32.load offset=12 - local.tee $11 - local.get $8 - local.get $11 + local.tee $10 + local.get $7 + local.get $10 i32.lt_s select i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $4 i32.const 2 i32.shl - local.tee $11 - local.get $2 + local.tee $10 + local.get $1 i32.load offset=4 i32.add i32.load - local.set $12 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 3 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $11 local.get $4 - local.get $2 + local.get $1 i32.const 9296 i32.load call_indirect (type $1) - local.tee $12 + local.tee $11 i32.store offset=12 + local.get $9 local.get $10 - local.get $11 i32.add - local.get $12 + local.get $11 i32.store - local.get $9 - local.get $12 + local.get $8 + local.get $11 i32.const 1 call $~lib/rt/itcms/__link local.get $4 @@ -24218,12 +24492,12 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=128 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 9328 @@ -24243,67 +24517,67 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 2 i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $9 + local.tee $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load offset=4 - local.set $10 + local.set $9 i32.const 0 local.set $4 loop $for-loop|013 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store local.get $4 - local.get $8 - local.get $2 + local.get $7 + local.get $1 i32.load offset=12 - local.tee $11 - local.get $8 - local.get $11 + local.tee $10 + local.get $7 + local.get $10 i32.lt_s select i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $4 i32.const 2 i32.shl - local.tee $11 - local.get $2 + local.tee $10 + local.get $1 i32.load offset=4 i32.add i32.load - local.set $12 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store i32.const 3 global.set $~argumentsLength + local.get $9 local.get $10 - local.get $11 i32.add - local.get $12 + local.get $11 local.get $4 - local.get $2 + local.get $1 i32.const 9328 i32.load - call_indirect (type $15) + call_indirect (type $17) f32.store local.get $4 i32.const 1 @@ -24316,12 +24590,12 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=132 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length i32.const 4 i32.ne @@ -24334,9 +24608,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.const 0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer @@ -25144,26 +25418,26 @@ i64.const -7046029254386353131 call $~lib/bindings/dom/Math.random i64.reinterpret_f64 - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.eqz select - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor i64.const -49064778989728563 i64.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor i64.const -4265267296055464877 i64.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor @@ -25171,22 +25445,22 @@ global.get $~lib/math/random_state0_64 i64.const -1 i64.xor - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor i64.const -49064778989728563 i64.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor i64.const -4265267296055464877 i64.mul - local.tee $5 - local.get $5 + local.tee $3 + local.get $3 i64.const 33 i64.shr_u i64.xor @@ -25203,243 +25477,243 @@ i32.store offset=140 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=144 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store offset=4 local.get $0 i32.const 0 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=148 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store offset=4 local.get $0 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=152 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 95 i32.store offset=4 local.get $0 i32.const 2 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store offset=4 local.get $0 i32.const 3 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=160 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store offset=4 local.get $0 i32.const 4 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=164 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 115 i32.store offset=4 local.get $0 i32.const 5 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=168 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 120 i32.store offset=4 local.get $0 i32.const 6 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=172 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 125 i32.store offset=4 local.get $0 i32.const 7 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=176 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 130 i32.store offset=4 local.get $0 i32.const 8 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=180 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 135 i32.store offset=4 local.get $0 i32.const 9 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=184 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 75 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 10 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=188 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 11 - local.get $2 + local.get $1 call $~lib/array/Array#__set local.get $0 global.set $std/array/inputStabArr @@ -25453,243 +25727,243 @@ i32.store offset=192 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=196 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 95 i32.store offset=4 local.get $0 i32.const 0 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=200 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 125 i32.store offset=4 local.get $0 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=204 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 130 i32.store offset=4 local.get $0 i32.const 2 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=208 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 70 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 3 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=212 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 75 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 140 i32.store offset=4 local.get $0 i32.const 4 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=216 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store offset=4 local.get $0 i32.const 5 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=220 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 90 i32.store offset=4 local.get $0 i32.const 6 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=224 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 80 i32.store offset=4 local.get $0 i32.const 7 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=228 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store offset=4 local.get $0 i32.const 8 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=232 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 120 i32.store offset=4 local.get $0 i32.const 9 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=236 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 135 i32.store offset=4 local.get $0 i32.const 10 - local.get $2 + local.get $1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $2 + local.tee $1 i32.store offset=240 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 110 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 115 i32.store offset=4 local.get $0 i32.const 11 - local.get $2 + local.get $1 call $~lib/array/Array#__set local.get $0 global.set $std/array/outputStabArr @@ -25716,12 +25990,12 @@ i32.const 9 i32.const 10288 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -25755,12 +26029,12 @@ i32.const 9 i32.const 10384 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -25777,10 +26051,10 @@ i32.const 12 i32.const 10448 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=252 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 global.set $~argumentsLength @@ -25802,7 +26076,7 @@ i32.const 10544 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 10544 @@ -25819,14 +26093,14 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load offset=12 global.get $~lib/memory/__stack_pointer i32.const 10544 @@ -25841,20 +26115,20 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 8 i32.const 3 i32.const 12 i32.const 10576 call $~lib/rt/__newArray - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 block $__inlined_func$std/array/isArraysEqual$7 (result i32) i32.const 0 - local.set $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25867,48 +26141,48 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 call $~lib/array/Array#get:length - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store block $folding-inner1 block $folding-inner01 - local.get $4 + local.get $1 call $~lib/array/Array#get:length - local.get $8 + local.get $7 i32.ne br_if $folding-inner01 - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.eq br_if $folding-inner1 loop $for-loop|02 - local.get $0 - local.get $8 + local.get $4 + local.get $7 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $4 call $~lib/array/Array#__get - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 f64.ne if (result i32) global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store + local.get $1 local.get $4 - local.get $0 call $~lib/array/Array#__get - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 f64.ne else i32.const 0 @@ -25916,20 +26190,20 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $4 call $~lib/array/Array#__get i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store + local.get $1 local.get $4 - local.get $0 call $~lib/array/Array#__get i64.reinterpret_f64 i64.const 63 @@ -25938,26 +26212,26 @@ i32.ne br_if $folding-inner01 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $4 call $~lib/array/Array#__get - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store + local.get $1 local.get $4 - local.get $0 call $~lib/array/Array#__get - local.get $6 + local.get $5 f64.ne br_if $folding-inner01 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|02 end end @@ -26037,12 +26311,12 @@ i32.const 4 i32.const 10752 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26131,12 +26405,12 @@ i32.const 8 i32.const 10880 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -26153,7 +26427,7 @@ i32.const 4 i32.const 10928 call $~lib/rt/__newArray - local.tee $4 + local.tee $1 i32.store offset=264 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -26161,7 +26435,7 @@ i32.const 4 i32.const 10960 call $~lib/rt/__newArray - local.tee $8 + local.tee $4 i32.store offset=268 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -26169,7 +26443,7 @@ i32.const 4 i32.const 10992 call $~lib/rt/__newArray - local.tee $9 + local.tee $7 i32.store offset=272 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26177,7 +26451,7 @@ i32.const 4 i32.const 11024 call $~lib/rt/__newArray - local.tee $10 + local.tee $8 i32.store offset=276 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26185,57 +26459,57 @@ i32.const 4 i32.const 11072 call $~lib/rt/__newArray - local.tee $11 + local.tee $9 i32.store offset=280 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $12 + local.tee $10 i32.store offset=284 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray - local.tee $13 + local.tee $11 i32.store offset=288 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray - local.tee $14 + local.tee $12 i32.store offset=292 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $0 + local.tee $13 i32.store offset=296 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray - local.tee $2 + local.tee $0 i32.store offset=300 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store - local.get $4 + local.get $1 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.store - local.get $8 + local.get $4 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.store i32.const 1 i32.const 2 i32.const 4 i32.const 11152 call $~lib/rt/__newArray - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 - local.get $8 local.get $4 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26248,24 +26522,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $7 i32.store - local.get $9 + local.get $7 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $7 i32.store i32.const 2 i32.const 2 i32.const 4 i32.const 11184 call $~lib/rt/__newArray - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 - local.get $9 - local.get $4 + local.get $7 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26278,18 +26552,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $8 i32.store - local.get $10 + local.get $8 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $10 - local.get $11 + local.get $8 + local.get $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26302,18 +26576,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $10 i32.store - local.get $12 + local.get $10 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $10 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $12 - local.get $11 + local.get $10 + local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -26326,18 +26600,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $11 i32.store - local.get $13 + local.get $11 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $11 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $13 local.get $11 + local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -26350,18 +26624,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $12 i32.store - local.get $14 + local.get $12 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $12 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $14 - local.get $11 + local.get $12 + local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -26374,18 +26648,18 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $13 i32.store - local.get $0 + local.get $13 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $13 i32.store global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $9 i32.store offset=8 - local.get $0 - local.get $11 + local.get $13 + local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -26398,9 +26672,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer i32.const 24 @@ -26457,10 +26731,10 @@ i32.const 0 i32.le_s select - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer local.get $4 - local.get $8 + local.get $7 i32.sub local.tee $4 i32.const 0 @@ -26473,24 +26747,24 @@ i32.const 23 i32.const 0 call $~lib/rt/__newArray - local.tee $9 + local.tee $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load offset=4 - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - local.get $8 + local.get $7 i32.const 2 i32.shl i32.add - local.set $8 + local.set $7 i32.const 0 local.set $0 local.get $4 @@ -26503,16 +26777,16 @@ i32.lt_u if local.get $0 - local.get $10 + local.get $9 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load - local.tee $11 + local.tee $10 i32.store - local.get $9 - local.get $11 + local.get $8 + local.get $10 i32.const 1 call $~lib/rt/itcms/__link local.get $0 @@ -26531,12 +26805,12 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store global.get $~lib/memory/__stack_pointer i32.const 11216 i32.store offset=4 - local.get $9 + local.get $8 i32.const 11216 call $~lib/array/Array#sort local.tee $0 @@ -26545,15 +26819,15 @@ local.set $4 global.get $~lib/memory/__stack_pointer global.get $std/array/inputStabArr - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length - local.set $2 + local.set $1 loop $for-loop|014 local.get $1 local.get $2 - i32.lt_s + i32.gt_s if block $for-break0 global.get $~lib/memory/__stack_pointer @@ -26561,43 +26835,43 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 + local.get $2 call $~lib/array/Array#__get - local.tee $8 + local.tee $7 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/outputStabArr - local.tee $9 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $9 - local.get $1 + local.get $8 + local.get $2 call $~lib/array/Array#__get - local.tee $9 + local.tee $8 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.load global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load i32.ne if (result i32) i32.const 1 else global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 i32.load offset=4 i32.ne end @@ -26606,10 +26880,10 @@ local.set $4 br $for-break0 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|014 end end @@ -26942,9 +27216,9 @@ local.get $2 i32.store i32.const 0 - local.set $0 + local.set $4 loop $for-loop|06 - local.get $0 + local.get $4 i32.const 512 i32.lt_s if @@ -26966,14 +27240,14 @@ i32.const 4 i32.const 31 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=4 - local.get $4 + local.get $1 i32.const 511 - local.get $0 + local.get $4 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -26981,16 +27255,16 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 local.get $2 - local.get $0 local.get $4 + local.get $1 call $~lib/array/Array#__set - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|06 end end @@ -27023,7 +27297,7 @@ i32.const 34 i32.const 11648 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=324 global.get $~lib/memory/__stack_pointer local.get $0 @@ -27045,16 +27319,46 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 11696 + i32.const 11696 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=12 + local.get $0 + i32.const 11696 + call $~lib/array/Array#sort + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 11696 - i32.store offset=8 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -27065,78 +27369,48 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.set $7 block $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 11696 - i32.store offset=12 - local.get $0 - i32.const 11696 - call $~lib/array/Array#sort - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11696 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 1 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.set $8 loop $for-loop|07 - local.get $1 - local.get $8 + local.get $2 + local.get $7 i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 local.get $4 - local.get $1 + local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=8 local.get $4 - local.get $1 + local.get $2 call $~lib/array/Array#__get - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=4 i32.const 2 global.set $~argumentsLength + local.get $8 local.get $9 - local.get $10 i32.const 11696 i32.load call_indirect (type $0) @@ -27150,10 +27424,10 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|07 end end @@ -27180,37 +27454,37 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 + local.get $1 call $~lib/array/Array#get:length local.get $4 i32.ne @@ -27223,7 +27497,7 @@ br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end local.get $0 - local.get $2 + local.get $1 i32.eq if global.get $~lib/memory/__stack_pointer @@ -27234,9 +27508,9 @@ br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end i32.const 0 - local.set $1 + local.set $2 loop $for-loop|08 - local.get $1 + local.get $2 local.get $4 i32.lt_s if @@ -27244,21 +27518,21 @@ local.get $0 i32.store offset=8 local.get $0 - local.get $1 + local.get $2 call $~lib/array/Array#__get - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 - local.get $2 local.get $1 + local.get $2 call $~lib/array/Array#__get - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -27272,13 +27546,13 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 + local.get $7 local.get $8 - local.get $9 call $~lib/string/String.__eq i32.eqz global.get $~lib/memory/__stack_pointer @@ -27293,10 +27567,10 @@ i32.const 0 br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|08 end end @@ -27349,34 +27623,34 @@ i32.const 16 i32.const 16 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 0 i32.store - local.get $9 + local.get $8 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -27386,41 +27660,41 @@ local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $9 + local.get $8 local.get $1 i32.store - local.get $9 + local.get $8 local.get $1 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 1600 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 i32.const 400 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store i32.const 0 local.set $4 @@ -27430,13 +27704,13 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 call $~lib/math/NativeMath.random f64.const 32 f64.mul i32.trunc_sat_f64_s - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -27457,10 +27731,10 @@ i32.const 11568 i32.store i32.const 0 - local.set $1 + local.set $2 loop $for-loop|00 - local.get $1 - local.get $10 + local.get $2 + local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer @@ -27476,7 +27750,7 @@ f64.mul f64.floor i32.trunc_sat_f64_s - local.set $12 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -27492,7 +27766,7 @@ i32.const 10032 i32.store block $__inlined_func$~lib/string/String#charAt$737 - local.get $12 + local.get $11 i32.const 10028 i32.load i32.const 1 @@ -27504,17 +27778,17 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $1 br $__inlined_func$~lib/string/String#charAt$737 end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $2 - local.get $12 + local.get $1 + local.get $11 i32.const 1 i32.shl i32.const 10032 @@ -27527,17 +27801,17 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $~lib/string/String.__concat local.tee $0 i32.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|00 end end @@ -27548,7 +27822,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $9 + local.get $8 local.get $4 local.get $0 call $~lib/array/Array#__set @@ -27563,10 +27837,10 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=328 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store i32.const 1 global.set $~argumentsLength @@ -27588,12 +27862,12 @@ i32.const 11728 i32.store global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 11728 i32.store offset=8 - local.get $9 + local.get $8 i32.const 11728 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -27625,7 +27899,7 @@ i32.store local.get $0 i32.load offset=4 - local.set $8 + local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -27636,7 +27910,7 @@ i32.const 11856 i32.store i32.const 0 - local.set $1 + local.set $2 i32.const 0 local.set $4 global.get $~lib/memory/__stack_pointer @@ -27654,7 +27928,7 @@ local.get $0 i32.const 1 i32.sub - local.tee $0 + local.tee $7 i32.const 0 i32.lt_s if @@ -27663,19 +27937,19 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinBooleanArray$12 end block $folding-inner07 - local.get $0 + local.get $7 i32.eqz if i32.const 11792 i32.const 11824 - local.get $8 + local.get $1 i32.load8_u select - local.set $2 + local.set $0 br $folding-inner07 end global.get $~lib/memory/__stack_pointer @@ -27686,67 +27960,67 @@ i32.load i32.const 1 i32.shr_u - local.tee $9 + local.tee $8 i32.const 5 i32.add - local.get $0 + local.get $7 i32.mul i32.const 5 i32.add - local.tee $10 + local.tee $9 i32.const 1 i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store offset=4 loop $for-loop|18 - local.get $0 local.get $4 - i32.gt_s + local.get $7 + i32.lt_s if + local.get $1 local.get $4 - local.get $8 i32.add i32.load8_u - local.tee $11 + local.tee $10 i32.eqz i32.const 4 i32.add - local.set $12 + local.set $11 + local.get $0 local.get $2 - local.get $1 i32.const 1 i32.shl i32.add i32.const 11792 i32.const 11824 - local.get $11 + local.get $10 select - local.get $12 + local.get $11 i32.const 1 i32.shl memory.copy - local.get $1 - local.get $12 + local.get $2 + local.get $11 i32.add - local.set $1 - local.get $9 + local.set $2 + local.get $8 if + local.get $0 local.get $2 - local.get $1 i32.const 1 i32.shl i32.add i32.const 11856 - local.get $9 + local.get $8 i32.const 1 i32.shl memory.copy - local.get $1 - local.get $9 + local.get $2 + local.get $8 i32.add - local.set $1 + local.set $2 end local.get $4 i32.const 1 @@ -27755,42 +28029,42 @@ br $for-loop|18 end end - local.get $0 - local.get $8 + local.get $1 + local.get $7 i32.add i32.load8_u - local.tee $0 + local.tee $1 i32.eqz i32.const 4 i32.add local.set $4 + local.get $0 local.get $2 - local.get $1 i32.const 1 i32.shl i32.add i32.const 11792 i32.const 11824 - local.get $0 + local.get $1 select local.get $4 i32.const 1 i32.shl memory.copy - local.get $1 + local.get $2 local.get $4 i32.add - local.tee $0 - local.get $10 + local.tee $1 + local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $1 call $~lib/string/String#substring - local.set $2 + local.set $0 br $folding-inner07 end global.get $~lib/memory/__stack_pointer @@ -27809,9 +28083,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 11888 call $~lib/string/String.__eq i32.eqz @@ -28252,12 +28526,14 @@ i32.const 11 i32.const 14256 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 + i32.const 0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28270,7 +28546,7 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -28284,17 +28560,17 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store @@ -28310,10 +28586,10 @@ i64.const 0 i64.store block $__inlined_func$~lib/util/string/joinIntegerArray$741 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $7 i32.const 0 i32.lt_s if @@ -28322,16 +28598,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray$741 end - local.get $1 + local.get $7 i32.eqz if - local.get $4 + local.get $2 i32.load16_u call $~lib/util/number/utoa32 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -28349,7 +28625,7 @@ local.tee $8 i32.const 10 i32.add - local.get $1 + local.get $7 i32.mul i32.const 10 i32.add @@ -28358,32 +28634,32 @@ i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store offset=4 loop $for-loop|03 - local.get $1 - local.get $3 - i32.gt_s + local.get $4 + local.get $7 + i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add + local.get $2 local.get $4 - local.get $3 i32.const 1 i32.shl i32.add i32.load16_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 + local.set $1 local.get $8 if - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add @@ -28392,43 +28668,43 @@ i32.const 1 i32.shl memory.copy - local.get $0 + local.get $1 local.get $8 i32.add - local.set $0 + local.set $1 end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|03 end end - local.get $9 - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add - local.get $4 - local.get $1 + local.get $2 + local.get $7 i32.const 1 i32.shl i32.add i32.load16_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.tee $0 - i32.gt_s + local.tee $1 + local.get $9 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $1 call $~lib/string/String#substring - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -28449,9 +28725,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 14288 call $~lib/string/String.__eq i32.eqz @@ -28468,14 +28744,14 @@ i32.const 39 i32.const 14336 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 i32.const 0 - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28488,7 +28764,7 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -28502,17 +28778,17 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store @@ -28528,10 +28804,10 @@ i64.const 0 i64.store block $__inlined_func$~lib/util/string/joinIntegerArray$742 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $7 i32.const 0 i32.lt_s if @@ -28540,16 +28816,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray$742 end - local.get $1 + local.get $7 i32.eqz if - local.get $4 + local.get $2 i32.load16_s call $~lib/util/number/itoa32 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -28567,7 +28843,7 @@ local.tee $8 i32.const 11 i32.add - local.get $1 + local.get $7 i32.mul i32.const 11 i32.add @@ -28576,32 +28852,32 @@ i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store offset=4 loop $for-loop|05 - local.get $1 - local.get $3 - i32.gt_s + local.get $4 + local.get $7 + i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add + local.get $2 local.get $4 - local.get $3 i32.const 1 i32.shl i32.add i32.load16_s call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 + local.set $1 local.get $8 if - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add @@ -28610,43 +28886,43 @@ i32.const 1 i32.shl memory.copy - local.get $0 + local.get $1 local.get $8 i32.add - local.set $0 + local.set $1 end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|05 end end - local.get $9 - local.get $2 local.get $0 + local.get $1 i32.const 1 i32.shl i32.add - local.get $4 - local.get $1 + local.get $2 + local.get $7 i32.const 1 i32.shl i32.add i32.load16_s call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.tee $0 - i32.gt_s + local.tee $1 + local.get $9 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 local.get $0 + local.get $1 call $~lib/string/String#substring - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -28667,9 +28943,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 14368 call $~lib/string/String.__eq i32.eqz @@ -28819,7 +29095,7 @@ i32.store local.get $0 i32.load offset=4 - local.set $1 + local.set $4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -28832,7 +29108,7 @@ i32.const 0 local.set $0 i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -28848,7 +29124,7 @@ local.get $2 i32.const 1 i32.sub - local.tee $4 + local.tee $7 i32.const 0 i32.lt_s if @@ -28857,18 +29133,18 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray$13 end block $folding-inner09 - local.get $4 + local.get $7 i32.eqz if block $__inlined_func$~lib/util/number/itoa64$4 (result i32) - local.get $1 + local.get $4 i64.load i64.extend32_s - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28880,7 +29156,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $5 + local.get $3 i64.eqz if global.get $~lib/memory/__stack_pointer @@ -28891,10 +29167,10 @@ br $__inlined_func$~lib/util/number/itoa64$4 end i64.const 0 - local.get $5 + local.get $3 i64.sub - local.get $5 - local.get $5 + local.get $3 + local.get $3 i64.const 63 i64.shr_u i32.wrap_i64 @@ -28902,145 +29178,145 @@ i32.shl local.tee $0 select - local.tee $5 + local.tee $3 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.wrap_i64 - local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $3 + local.tee $4 i32.const 1 i32.shl local.get $0 i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store local.get $0 - local.get $2 - i32.add local.get $1 - local.get $3 + i32.add + local.get $2 + local.get $4 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $5 + local.get $3 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $5 + local.get $3 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $5 + local.get $3 i64.const 10000000000 i64.ge_u i32.add else - local.get $5 + local.get $3 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $5 + local.get $3 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $5 + local.get $3 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $5 + local.get $3 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $5 + local.get $3 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $5 + local.get $3 i64.const 1000000000000000000 i64.ge_u i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl local.get $0 i32.add i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store local.get $0 - local.get $2 - i32.add - local.get $5 local.get $1 + i32.add + local.get $3 + local.get $2 call $~lib/util/number/utoa64_dec_lut end local.get $0 if - local.get $2 + local.get $1 i32.const 45 i32.store16 end @@ -29048,9 +29324,9 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 end - local.set $2 + local.set $0 br $folding-inner09 end global.get $~lib/memory/__stack_pointer @@ -29064,7 +29340,7 @@ local.tee $8 i32.const 21 i32.add - local.get $4 + local.get $7 i32.mul i32.const 21 i32.add @@ -29076,8 +29352,8 @@ local.tee $2 i32.store offset=4 loop $for-loop|010 - local.get $3 - local.get $4 + local.get $1 + local.get $7 i32.lt_s if local.get $2 @@ -29085,8 +29361,8 @@ i32.const 1 i32.shl i32.add + local.get $4 local.get $1 - local.get $3 i32.const 3 i32.shl i32.add @@ -29112,21 +29388,20 @@ i32.add local.set $0 end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|010 end end - local.get $9 local.get $2 local.get $0 i32.const 1 i32.shl i32.add - local.get $1 local.get $4 + local.get $7 i32.const 3 i32.shl i32.add @@ -29135,7 +29410,8 @@ local.get $0 i32.add local.tee $0 - i32.gt_s + local.get $9 + i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $2 @@ -29143,13 +29419,15 @@ local.get $2 local.get $0 call $~lib/string/String#substring - local.set $2 + local.set $0 br $folding-inner09 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 + local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray$13 end global.get $~lib/memory/__stack_pointer @@ -29166,9 +29444,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 14704 call $~lib/string/String.__eq i32.eqz @@ -29296,18 +29574,18 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store i32.const 0 - local.set $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -29321,7 +29599,7 @@ i32.const 20 memory.fill block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 - local.get $1 + local.get $0 i32.const 1 i32.sub local.tee $1 @@ -29333,14 +29611,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 end local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $0 i32.store @@ -29354,7 +29632,7 @@ else i32.const 11568 end - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -29362,7 +29640,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$14 end i32.const 11568 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11568 i32.store offset=8 @@ -29373,15 +29651,15 @@ i32.load i32.const 1 i32.shr_u - local.set $4 + local.set $7 loop $for-loop|011 - local.get $0 local.get $1 - i32.lt_s + local.get $4 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $0 + local.get $2 + local.get $4 i32.const 2 i32.shl i32.add @@ -29391,7 +29669,7 @@ local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -29403,62 +29681,62 @@ global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=12 - local.get $2 + local.get $0 local.get $8 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 11856 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|011 end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/array/Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 - local.get $2 local.get $0 + local.get $1 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end global.get $~lib/memory/__stack_pointer @@ -29475,9 +29753,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 15168 call $~lib/string/String.__eq i32.eqz @@ -29549,18 +29827,18 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store i32.const 0 - local.set $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -29574,7 +29852,7 @@ i32.const 20 memory.fill block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 - local.get $1 + local.get $0 i32.const 1 i32.sub local.tee $1 @@ -29586,14 +29864,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 end local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $0 i32.store @@ -29607,7 +29885,7 @@ else i32.const 11568 end - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -29615,7 +29893,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array>$15 end i32.const 11568 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11568 i32.store offset=8 @@ -29626,15 +29904,15 @@ i32.load i32.const 1 i32.shr_u - local.set $4 + local.set $7 loop $for-loop|016 - local.get $0 local.get $1 - i32.lt_s + local.get $4 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $0 + local.get $2 + local.get $4 i32.const 2 i32.shl i32.add @@ -29644,7 +29922,7 @@ local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -29656,62 +29934,62 @@ global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=12 - local.get $2 + local.get $0 local.get $8 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 11856 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|016 end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/array/Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 - local.get $2 local.get $0 + local.get $1 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end global.get $~lib/memory/__stack_pointer @@ -29728,9 +30006,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 15168 call $~lib/string/String.__eq i32.eqz @@ -29806,18 +30084,18 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store i32.const 0 - local.set $0 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -29831,7 +30109,7 @@ i32.const 20 memory.fill block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 - local.get $1 + local.get $0 i32.const 1 i32.sub local.tee $1 @@ -29843,14 +30121,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11568 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 end local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $0 i32.store @@ -29864,7 +30142,7 @@ else i32.const 11568 end - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -29872,7 +30150,7 @@ br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>>$16 end i32.const 11568 - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 11568 i32.store offset=8 @@ -29883,15 +30161,15 @@ i32.load i32.const 1 i32.shr_u - local.set $4 + local.set $7 loop $for-loop|017 - local.get $0 local.get $1 - i32.lt_s + local.get $4 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $0 + local.get $2 + local.get $4 i32.const 2 i32.shl i32.add @@ -29901,7 +30179,7 @@ local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -29913,62 +30191,62 @@ global.get $~lib/memory/__stack_pointer local.get $8 i32.store offset=12 - local.get $2 + local.get $0 local.get $8 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 11856 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|017 end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/array/Array<~lib/array/Array>#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 - local.get $2 local.get $0 + local.get $1 call $~lib/string/String.__concat - local.tee $2 + local.tee $0 i32.store offset=8 end global.get $~lib/memory/__stack_pointer @@ -29985,9 +30263,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 13568 call $~lib/string/String.__eq i32.eqz @@ -30161,23 +30439,23 @@ i32.store local.get $1 i32.load offset=4 - local.set $3 + local.set $8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=12 - local.set $8 - i32.const 0 local.set $1 i32.const 0 + local.set $2 + i32.const 0 local.set $0 loop $for-loop|023 local.get $0 - local.get $8 + local.get $1 i32.lt_s if - local.get $3 + local.get $8 local.get $0 i32.const 2 i32.shl @@ -30190,9 +30468,9 @@ else i32.const 0 end - local.get $1 + local.get $2 i32.add - local.set $1 + local.set $2 local.get $0 i32.const 1 i32.add @@ -30201,7 +30479,7 @@ end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 2 i32.shl local.tee $0 @@ -30216,7 +30494,7 @@ local.tee $10 i32.store offset=8 local.get $10 - local.get $1 + local.get $2 i32.store offset=12 local.get $10 local.get $0 @@ -30236,11 +30514,11 @@ i32.const 0 local.set $4 loop $for-loop|124 + local.get $1 local.get $4 - local.get $8 - i32.lt_s + i32.gt_s if - local.get $3 + local.get $8 local.get $4 i32.const 2 i32.shl @@ -30275,7 +30553,7 @@ local.set $0 loop $for-loop|225 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $9 @@ -30306,7 +30584,7 @@ i32.const 34 i32.const 15792 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=420 global.get $~lib/memory/__stack_pointer local.get $10 @@ -30324,38 +30602,38 @@ unreachable end i32.const 0 - local.set $0 + local.set $4 loop $for-loop|8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - call $~lib/array/Array#get:length local.get $0 + call $~lib/array/Array#get:length + local.get $4 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $10 i32.store offset=48 local.get $10 - local.get $0 + local.get $4 call $~lib/array/Array#__get - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=48 - local.get $1 local.get $0 + local.get $4 call $~lib/array/Array#__get - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=8 + local.get $1 local.get $2 - local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -30366,10 +30644,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|8 end end @@ -30457,511 +30735,236 @@ i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=12 - local.tee $2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $8 - i32.const 0 - local.set $4 - loop $for-loop|026 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $4 - local.get $2 - local.get $1 - i32.load offset=12 - local.tee $9 - local.get $2 - local.get $9 - i32.lt_s - select - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $9 - local.get $1 - i32.load offset=4 - i32.add - i32.load - local.tee $10 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $10 - local.get $4 - local.get $1 - i32.const 15984 - i32.load - call_indirect (type $1) - local.tee $10 - i32.store offset=16 - local.get $8 - local.get $9 - i32.add - local.get $10 - i32.store - local.get $3 - local.get $10 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|026 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $0 - i32.store offset=440 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1272 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1273 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1274 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1275 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 1276 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer i32.const 0 - global.set $std/array/inputStabArr + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=12 + local.tee $2 + i32.const 2 + i32.const 29 i32.const 0 - global.set $std/array/outputStabArr - i32.const 48960 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state + call $~lib/rt/__newArray + local.tee $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.set $8 i32.const 0 - i32.gt_s - if - loop $while-continue|028 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|028 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state + local.set $4 + loop $for-loop|026 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $2 + local.get $1 + i32.load offset=12 + local.tee $9 + local.get $2 + local.get $9 + i32.lt_s + select + i32.lt_s if - call $~lib/rt/itcms/step - drop - br $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $9 + local.get $1 + i32.load offset=4 + i32.add + i32.load + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $10 + local.get $4 + local.get $1 + i32.const 15984 + i32.load + call_indirect (type $1) + local.tee $10 + i32.store offset=16 + local.get $8 + local.get $9 + i32.add + local.get $10 + i32.store + local.get $7 + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|026 end end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer - i32.const 444 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - return - end - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.shl - local.tee $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $1 - local.get $3 - if - local.get $1 - local.get $3 - local.get $5 - memory.copy - end - local.get $1 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7712 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $0 - select - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $0 + i32.store offset=440 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1272 i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add + call $~lib/builtins/abort + unreachable end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $0 - local.get $3 - i32.add - local.get $2 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - if - local.get $3 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1273 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1274 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7712 - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u + i32.store + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1275 i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add + call $~lib/builtins/abort + unreachable end - else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 1276 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/arr + i32.const 0 + global.set $std/array/inputStabArr + i32.const 0 + global.set $std/array/outputStabArr + i32.const 48960 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|028 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|028 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 444 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.tee $2 + i32.const 48992 + i32.const 49040 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/std/arraybuffer.release.wat b/tests/compiler/std/arraybuffer.release.wat index 334f1c302e..5e80739f7e 100644 --- a/tests/compiler/std/arraybuffer.release.wat +++ b/tests/compiler/std/arraybuffer.release.wat @@ -1,12 +1,12 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) + (type $5 (func (param i32 i32 i32) (result i32))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -43,794 +43,494 @@ (data $13 (i32.const 1712) "\11\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 1073741804 + i32.ge_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$185 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34552 - i32.lt_u - i32.and - i32.eqz - if + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 i32.const 0 - i32.const 1232 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$185 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1712 - i32.load - i32.gt_u - if - i32.const 1360 - i32.const 1424 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $1 - i32.const 2 - i32.shl - i32.const 1716 - i32.add - i32.load - i32.const 32 - i32.and end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - return + call $~lib/rt/tlsf/initialize end - global.get $~lib/rt/itcms/white + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 + i32.const 1168 i32.const 1504 - i32.const 268 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 + local.get $4 + local.get $2 i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if - i32.const 0 - i32.const 1504 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 end + else + local.get $5 end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1504 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1504 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1504 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shr_u + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - i32.const 31 - i32.const 1073741820 local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 + i32.const 4 + i32.add local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.load + i32.const -3 + i32.and + i32.store end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const -4 + i32.and + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 + i32.add + global.set $~lib/rt/itcms/total local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1784 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 382 - i32.const 14 + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 + i32.add + local.tee $1 + i32.const 0 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end + i32.const 0 + i32.gt_s + select else - local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select end + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select end local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 + local.tee $2 i32.const 0 - i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add + i32.gt_s + select + local.tee $2 + i32.const 1 + call $~lib/rt/itcms/__new local.tee $3 - i32.const 2 - i32.store - local.get $0 + i32.store offset=4 local.get $3 - i32.store offset=1568 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return end + local.get $0 + i32.eqz if + i32.const 0 + i32.const 1232 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34560 - i32.const 0 - i32.store - i32.const 36128 - i32.const 0 - i32.store - loop $for-loop|0 + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34560 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34560 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end - i32.const 34560 - i32.const 36132 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34560 - global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1092,51 +792,70 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 256 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 i32.lt_u if - local.get $1 + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub - local.tee $2 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $3 i32.const 16 i32.lt_u local.get $2 @@ -1147,445 +866,455 @@ if i32.const 0 i32.const 1504 - i32.const 334 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 local.get $2 - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 + i32.const 2 i32.shl - i32.and + i32.add local.tee $1 - if (result i32) - local.get $0 + i32.load offset=96 + i32.eq + if local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $2 i32.const 2 i32.shl i32.add + local.tee $1 i32.load offset=4 - local.tee $2 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 i32.eqz if - i32.const 0 - i32.const 1504 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1168 - i32.const 1232 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end + local.get $0 + local.get $0 + i32.load + i32.const -2 local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + i32.rotl + i32.and + i32.store end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold end end - global.get $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 i32.eqz if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 1168 + i32.const 0 i32.const 1504 - i32.const 461 - i32.const 29 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load local.tee $2 - i32.eqz + i32.const 1 + i32.and if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 + local.get $0 local.get $4 - i32.load offset=1568 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add local.get $2 - i32.const 16 - i32.shl + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.sub - i32.ne - i32.shl i32.add - i32.const 65535 + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - i32.const -65536 + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1504 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end + local.tee $2 + i32.const 16 + i32.lt_u local.get $5 - local.get $2 - i32.load - i32.const -4 + i32.const 23 + i32.lt_u i32.and - i32.gt_u + i32.eqz if i32.const 0 i32.const 1504 - i32.const 501 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 + local.get $0 local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add - i32.const 15 - i32.and + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 0 - i32.const 1504 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - local.get $6 - i32.const -4 - i32.and + local.get $0 local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$185 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34552 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$185 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - local.get $5 - local.get $6 - i32.const 2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 + local.get $1 + i32.const 1712 i32.load - i32.const -4 - i32.and + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1716 i32.add - local.tee $3 - local.get $3 i32.load - i32.const -3 + i32.const 32 i32.and - i32.store end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 local.set $3 local.get $2 - local.get $1 + i32.load offset=8 + local.set $1 + local.get $0 global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 + i32.eqz + i32.const 2 local.get $3 + select local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and i32.or i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 local.get $0 - memory.fill local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + i32.store offset=8 local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 i32.load offset=4 i32.const 3 i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -1621,126 +1350,395 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34560 + i32.const 0 + i32.store + i32.const 36128 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - unreachable end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:std/arraybuffer + i32.const 34560 + i32.const 36132 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34560 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1784 - i32.lt_s + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34576 - i32.const 34624 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $3 local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if local.get $3 + i32.const 4 i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $3 local.get $1 - local.get $3 - i32.lt_s - select + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 1 - call $~lib/rt/itcms/__new local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $3 - local.get $0 local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $3 + i32.const 2 + i32.store + local.get $0 local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1847,6 +1845,9 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~start + call $start:std/arraybuffer + ) (func $start:std/arraybuffer (local $0 i32) (local $1 i32) diff --git a/tests/compiler/std/console.release.wat b/tests/compiler/std/console.release.wat index a45eaf7c52..e8c683571e 100644 --- a/tests/compiler/std/console.release.wat +++ b/tests/compiler/std/console.release.wat @@ -1,18 +1,18 @@ (module (type $0 (func (param i32))) (type $1 (func (param i32 i32))) - (type $2 (func)) - (type $3 (func (param i32 i32 i32 i32))) - (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) - (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) - (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) - (import "env" "console.info" (func $~lib/bindings/dom/console.info (param i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "console.warn" (func $~lib/bindings/dom/console.warn (param i32))) - (import "env" "console.error" (func $~lib/bindings/dom/console.error (param i32))) - (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) (import "env" "console.timeLog" (func $~lib/bindings/dom/console.timeLog (param i32))) (import "env" "console.timeEnd" (func $~lib/bindings/dom/console.timeEnd (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "console.time" (func $~lib/bindings/dom/console.time (param i32))) + (import "env" "console.log" (func $~lib/bindings/dom/console.log (param i32))) + (import "env" "console.info" (func $~lib/bindings/dom/console.info (param i32))) + (import "env" "console.error" (func $~lib/bindings/dom/console.error (param i32))) + (import "env" "console.debug" (func $~lib/bindings/dom/console.debug (param i32))) + (import "env" "console.assert" (func $~lib/bindings/dom/console.assert (param i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34380)) (memory $0 1) (data $0 (i32.const 1036) "\1c") @@ -45,128 +45,7 @@ (data $13.1 (i32.const 1592) "\02\00\00\00\08\00\00\001\002\003\004") (export "memory" (memory $0)) (start $~start) - (func $~start - i32.const 0 - i32.const 1056 - call $~lib/console/console.assert - i32.const 1 - i32.const 1088 - call $~lib/console/console.assert - i32.const 1120 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - i32.const 1168 - call $~lib/bindings/dom/console.debug - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store - i32.const 1216 - call $~lib/bindings/dom/console.info - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1264 - i32.store - i32.const 1264 - call $~lib/bindings/dom/console.warn - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1612 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1312 - i32.store - i32.const 1312 - call $~lib/bindings/dom/console.error - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1360 - call $~lib/console/console.time - i32.const 1360 - call $~lib/console/console.timeLog - i32.const 1360 - call $~lib/console/console.timeEnd - i32.const 1408 - call $~lib/console/console.timeLog - i32.const 1408 - call $~lib/console/console.timeEnd - i32.const 1456 - call $~lib/console/console.time - i32.const 1456 - call $~lib/console/console.time - i32.const 1504 - call $~lib/console/console.log - i32.const 1536 - call $~lib/console/console.log - i32.const 1568 - call $~lib/console/console.log - i32.const 1600 - call $~lib/console/console.log - return - end - i32.const 34400 - i32.const 34448 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/console/console.assert (param $0 i32) (param $1 i32) + (func $~lib/console/console.log (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -186,19 +65,16 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store local.get $0 - i32.const 0 - i32.ne - local.get $1 - call $~lib/bindings/dom/console.assert + call $~lib/bindings/dom/console.log global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.log (param $0 i32) + (func $~lib/console/console.time (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -221,13 +97,13 @@ local.get $0 i32.store local.get $0 - call $~lib/bindings/dom/console.log + call $~lib/bindings/dom/console.time global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.time (param $0 i32) + (func $~lib/console/console.timeLog (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -250,13 +126,13 @@ local.get $0 i32.store local.get $0 - call $~lib/bindings/dom/console.time + call $~lib/bindings/dom/console.timeLog global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.timeLog (param $0 i32) + (func $~lib/console/console.timeEnd (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -279,13 +155,13 @@ local.get $0 i32.store local.get $0 - call $~lib/bindings/dom/console.timeLog + call $~lib/bindings/dom/console.timeEnd global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.timeEnd (param $0 i32) + (func $~lib/console/console.assert (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -305,13 +181,137 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store local.get $0 - call $~lib/bindings/dom/console.timeEnd + i32.const 0 + i32.ne + local.get $1 + call $~lib/bindings/dom/console.assert global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + i32.const 0 + i32.const 1056 + call $~lib/console/console.assert + i32.const 1 + i32.const 1088 + call $~lib/console/console.assert + i32.const 1120 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1168 + call $~lib/bindings/dom/console.debug + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + i32.const 1216 + call $~lib/bindings/dom/console.info + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1264 + call $~lib/bindings/dom/console.warn + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1612 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.store + i32.const 1312 + call $~lib/bindings/dom/console.error + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1360 + call $~lib/console/console.time + i32.const 1360 + call $~lib/console/console.timeLog + i32.const 1360 + call $~lib/console/console.timeEnd + i32.const 1408 + call $~lib/console/console.timeLog + i32.const 1408 + call $~lib/console/console.timeEnd + i32.const 1456 + call $~lib/console/console.time + i32.const 1456 + call $~lib/console/console.time + i32.const 1504 + call $~lib/console/console.log + i32.const 1536 + call $~lib/console/console.log + i32.const 1568 + call $~lib/console/console.log + i32.const 1600 + call $~lib/console/console.log + return + end + i32.const 34400 + i32.const 34448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/std/dataview.release.wat b/tests/compiler/std/dataview.release.wat index 7a0b6705e9..f02332e163 100644 --- a/tests/compiler/std/dataview.release.wat +++ b/tests/compiler/std/dataview.release.wat @@ -1,20 +1,20 @@ (module - (type $0 (func (param i32 i32 i32))) - (type $1 (func (param i32 i32 i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32 i32) (result i32))) + (type $0 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32) (result i64))) (type $7 (func (param i32 i64 i32))) (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) + (type $9 (func (param i32 i32 i32) (result f32))) (type $10 (func (result i32))) - (type $11 (func (param i32) (result i32))) - (type $12 (func (param i32 i32 i32) (result f32))) - (type $13 (func (param i32 i32) (result f64))) + (type $11 (func (param i32 i32) (result f64))) + (type $12 (func (param i32 i32 i64))) + (type $13 (func (param i32 f64 i32))) (type $14 (func (param i32 f32 i32))) - (type $15 (func (param i32 f64 i32))) + (type $15 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -51,794 +51,523 @@ (data $13 (i32.const 1744) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (func $~lib/dataview/DataView#getUint16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$221 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34540 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$221 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.const 34560 + i32.const 34608 i32.const 1 - else - local.get $1 - i32.const 1744 - i32.load - i32.gt_u - if - i32.const 1360 - i32.const 1424 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1748 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $1 - i32.store offset=8 - local.get $1 + i32.const 31 + i32.shr_u local.get $0 + i32.load offset=8 local.get $1 - i32.load offset=4 - i32.const 3 - i32.and + i32.const 2 + i32.add + i32.lt_s i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz if - return + i32.const 1360 + i32.const 1632 + i32.const 79 + i32.const 7 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 local.get $0 - i32.const 20 - i32.sub - local.tee $0 i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + i32.add + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + else + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 8 + i32.shr_u + i32.or end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (func $~lib/dataview/DataView#getInt16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 268 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 2 + i32.add + i32.lt_s + i32.or if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 58 + i32.const 7 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load16_s + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + local.get $0 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 i32.shr_u - i32.const 16 - i32.xor + i32.or end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + ) + (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 284 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 + i32.const 31 + i32.shr_u + local.get $0 i32.load offset=8 - local.set $5 local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 + i32.const 4 + i32.add + i32.lt_s + i32.or if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 1360 + i32.const 1632 + i32.const 87 + i32.const 7 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 + i32.load offset=4 i32.add - i32.const 2 - i32.shl + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) + local.get $0 + else + local.get $0 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or end ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 201 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 4 + i32.add + i32.lt_s + i32.or if - i32.const 0 - i32.const 1504 - i32.const 203 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 66 + i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 4 + local.get $0 + i32.load offset=4 i32.add - local.get $1 i32.load - i32.const -4 - i32.and + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if + global.set $~lib/memory/__stack_pointer + local.get $2 + if (result i32) local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + else + local.get $0 + i32.const -16711936 i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const 8 + i32.rotl local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 + i32.const 16711935 i32.and - i32.add - local.tee $3 - i32.store + i32.const 8 + i32.rotr + i32.or end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + ) + (func $~lib/dataview/DataView#getFloat32 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 233 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 31 + i32.shr_u + local.get $0 + i32.load offset=8 local.get $1 i32.const 4 i32.add - local.get $2 - i32.add - i32.ne + i32.lt_s + i32.or if - i32.const 0 - i32.const 1504 - i32.const 234 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 35 + i32.const 7 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u + if (result f32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + f32.load else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.tee $0 + i32.const -16711936 + i32.and + i32.const 8 + i32.rotl + local.get $0 + i32.const 16711935 + i32.and + i32.const 8 + i32.rotr + i32.or + f32.reinterpret_i32 end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/dataview/DataView#getUint8 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 251 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + i32.store local.get $1 - i32.store offset=96 local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 72 + i32.const 50 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 + local.get $1 local.get $0 i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/dataview/DataView#getInt8 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 382 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.load offset=8 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1360 + i32.const 1632 + i32.const 51 + i32.const 50 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - return + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 local.get $0 - local.get $3 - i32.store offset=1568 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1568 + i32.const 178 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $1 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if - unreachable + return end - i32.const 34544 - i32.const 0 - i32.store - i32.const 36112 - i32.const 0 - i32.store - loop $for-loop|0 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34544 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34544 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 34544 - i32.const 36116 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34544 - global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1100,446 +829,553 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 i32.shl i32.add - i32.const 1 - i32.sub - local.set $1 + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1504 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.shr_u + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and i32.const 16 - i32.xor - local.set $1 + i32.shr_u + local.set $3 local.get $2 - i32.const 7 - i32.sub - local.set $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.const 16 - i32.lt_u + local.get $5 local.get $2 - i32.const 23 - i32.lt_u + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u if i32.const 0 i32.const 1504 - i32.const 334 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 local.get $2 - i32.const 2 - i32.shl + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl + i32.const 15 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz + if + i32.const 0 + i32.const 1504 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shl i32.add - i32.const 2 - i32.shl + local.get $5 i32.add - i32.load offset=96 + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - local.get $0 - i32.load - i32.const -1 local.get $2 - i32.const 1 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 i32.add - i32.shl + local.get $2 + i32.load + i32.const -4 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/dataview/DataView#getUint64 (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1073741804 - i32.ge_u + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s if - i32.const 1168 - i32.const 1232 - i32.const 261 - i32.const 31 + i32.const 1360 + i32.const 1632 + i32.const 159 + i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + if (result i64) + local.get $2 + else + local.get $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $2 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + ) + (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - call $~lib/rt/tlsf/initialize + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s if - i32.const 1168 - i32.const 1504 - i32.const 461 - i32.const 29 + i32.const 1360 + i32.const 1632 + i32.const 151 + i32.const 7 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + if (result i64) local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 + else local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and i64.const 16 i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i64.or + i64.const 32 + i64.rotr end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u + ) + (func $~lib/dataview/DataView#getFloat64 (param $0 i32) (param $1 i32) (result f64) + (local $2 i64) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 501 - i32.const 14 + i32.const 34560 + i32.const 34608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 361 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 44 + i32.const 7 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or + local.get $1 + if (result f64) + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + local.get $0 + i32.load offset=4 + f64.load else - local.get $2 - local.get $6 - i32.const -2 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store + local.get $0 + i32.load offset=4 + i64.load + local.tee $2 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and local.get $2 - i32.const 4 - i32.add + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + f64.reinterpret_i64 end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 + global.set $~lib/memory/__stack_pointer ) (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 @@ -1585,696 +1421,935 @@ i32.const 1 i32.eq local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - call $start:std/dataview - ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 1360 - i32.const 1568 - i32.const 178 - i32.const 45 + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const -4 + i32.and + local.tee $3 i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + i32.lt_u if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 local.get $3 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.get $1 - local.get $2 - i32.add + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 i32.lt_u local.get $2 - i32.const 1073741820 - i32.gt_u - i32.or + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1056 - i32.const 1632 - i32.const 25 - i32.const 7 + i32.const 0 + i32.const 1504 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $3 + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 local.get $0 - call $~lib/arraybuffer/ArrayBufferView#set:buffer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 + local.get $2 + i32.const 4 + i32.shl local.get $3 - local.get $0 - local.get $1 i32.add - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $1 i32.load - i32.sub - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/dataview/DataView#getFloat32 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - (local $3 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 31 - i32.shr_u - local.get $0 - i32.load offset=8 local.get $1 i32.const 4 i32.add - i32.lt_s - i32.or + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if - i32.const 1360 - i32.const 1632 - i32.const 35 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if (result f32) - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $0 - i32.load offset=4 + local.get $3 + i32.const 4 i32.add - f32.load - else - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 i32.store local.get $1 - local.get $0 - i32.load offset=4 + i32.const 4 i32.add + local.get $1 i32.load - local.tee $0 - i32.const -16711936 + i32.const -4 i32.and - i32.const 8 - i32.rotl + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 16711935 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 i32.and - i32.const 8 - i32.rotr - i32.or - f32.reinterpret_i32 + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/dataview/DataView#getFloat64 (param $0 i32) (param $1 i32) (result f64) - (local $2 i64) - (local $3 f64) - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - i32.load offset=8 - i32.const 8 - i32.lt_s + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 44 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - if (result f64) - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$221 local.get $0 i32.load offset=4 - f64.load - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34540 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$221 + end local.get $0 - i32.load offset=4 - i64.load + i32.load offset=8 local.tee $2 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $2 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and + i32.store offset=8 local.get $2 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - f64.reinterpret_i64 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/dataview/DataView#getInt8 (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - i32.const 1 + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 1744 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1748 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 local.get $1 local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 51 - i32.const 50 - call $~lib/builtins/abort + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.load + call $~lib/rt/itcms/__visit ) - (func $~lib/dataview/DataView#getInt16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - i32.const 31 - i32.shr_u - local.get $0 - i32.load offset=8 - local.get $1 - i32.const 2 - i32.add - i32.lt_s - i32.or + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1360 - i32.const 1632 - i32.const 58 - i32.const 7 + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=4 - i32.add - i32.load16_s - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 if (result i32) local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else local.get $0 - i32.const 8 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add i32.shl - local.get $0 - i32.const 65535 i32.and - i32.const 8 - i32.shr_u - i32.or + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end ) - (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - i32.const 1 + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 34544 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36112 + i32.const 0 i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34544 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34544 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34544 + i32.const 36116 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34544 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i32.const 31 - i32.shr_u - local.get $0 - i32.load offset=8 - local.get $1 - i32.const 4 - i32.add - i32.lt_s - i32.or + i64.extend_i32_u + i64.lt_u if - i32.const 1360 - i32.const 1632 - i32.const 66 - i32.const 7 + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=4 + i32.const 19 i32.add - i32.load - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - if (result i32) - local.get $0 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end else local.get $0 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - ) - (func $~lib/dataview/DataView#getInt64 (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 i32.const 8 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 151 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - local.get $0 - i32.load offset=4 - i64.load - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 - if (result i64) - local.get $2 - else - local.get $2 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $2 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $2 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $2 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - end - ) - (func $~lib/dataview/DataView#getUint8 (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.store offset=4 local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 72 - i32.const 50 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=1568 local.get $0 - i32.store local.get $1 - local.get $0 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end ) - (func $~lib/dataview/DataView#getUint16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i64) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2296,20 +2371,14 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - i32.const 31 - i32.shr_u local.get $0 i32.load offset=8 - local.get $1 - i32.const 2 - i32.add + i32.const 8 i32.lt_s - i32.or if i32.const 1360 i32.const 1632 - i32.const 79 + i32.const 174 i32.const 7 call $~lib/builtins/abort unreachable @@ -2317,30 +2386,44 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 i32.load offset=4 - i32.add - i32.load16_u - local.set $0 + local.get $2 + if (result i64) + local.get $1 + else + local.get $1 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $1 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $1 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $1 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + end + i64.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - if (result i32) - local.get $0 - else - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 8 - i32.shr_u - i32.or - end ) - (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2362,20 +2445,14 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - i32.const 31 - i32.shr_u local.get $0 i32.load offset=8 - local.get $1 i32.const 4 - i32.add i32.lt_s - i32.or if i32.const 1360 i32.const 1632 - i32.const 87 + i32.const 142 i32.const 7 call $~lib/builtins/abort unreachable @@ -2383,110 +2460,31 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 i32.load offset=4 - i32.add - i32.load - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 if (result i32) - local.get $0 + local.get $1 else - local.get $0 + local.get $1 i32.const -16711936 i32.and i32.const 8 i32.rotl - local.get $0 + local.get $1 i32.const 16711935 i32.and i32.const 8 i32.rotr i32.or end - ) - (func $~lib/dataview/DataView#getUint64 (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - if - i32.const 34560 - i32.const 34608 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - i32.const 8 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 159 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - local.get $0 - i32.load offset=4 - i64.load - local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - if (result i64) - local.get $2 - else - local.get $2 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $2 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $2 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $2 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - end ) - (func $~lib/dataview/DataView#setFloat32 (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/dataview/DataView#setUint16 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2510,53 +2508,42 @@ i32.store local.get $0 i32.load offset=8 - i32.const 4 + i32.const 2 i32.lt_s if i32.const 1360 i32.const 1632 - i32.const 95 + i32.const 135 i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $2 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + if (result i32) local.get $1 - f32.store else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i32.reinterpret_f32 - local.tee $0 - i32.const -16711936 - i32.and i32.const 8 - i32.rotl - local.get $0 - i32.const 16711935 + i32.shl + local.get $1 + i32.const 65535 i32.and i32.const 8 - i32.rotr + i32.shr_u i32.or - i32.store end + i32.store16 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setFloat64 (param $0 i32) (param $1 f64) (param $2 i32) - (local $3 i64) + (func $~lib/dataview/DataView#setInt64 (param $0 i32) (param $1 i64) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2585,45 +2572,37 @@ if i32.const 1360 i32.const 1632 - i32.const 103 + i32.const 167 i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $2 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + if (result i64) local.get $1 - f64.store else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i64.reinterpret_f64 - local.tee $3 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $3 + local.get $1 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.tee $3 + local.tee $1 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $3 + local.get $1 i64.const 281470681808895 i64.and i64.const 16 @@ -2631,14 +2610,14 @@ i64.or i64.const 32 i64.rotr - i64.store end + i64.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setInt16 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2662,12 +2641,12 @@ i32.store local.get $0 i32.load offset=8 - i32.const 2 + i32.const 4 i32.lt_s if i32.const 1360 i32.const 1632 - i32.const 116 + i32.const 123 i32.const 7 call $~lib/builtins/abort unreachable @@ -2682,22 +2661,24 @@ local.get $1 else local.get $1 + i32.const -16711936 + i32.and i32.const 8 - i32.shl + i32.rotl local.get $1 - i32.const 65535 + i32.const 16711935 i32.and i32.const 8 - i32.shr_u + i32.rotr i32.or end - i32.store16 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt16 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2721,12 +2702,12 @@ i32.store local.get $0 i32.load offset=8 - i32.const 4 + i32.const 2 i32.lt_s if i32.const 1360 i32.const 1632 - i32.const 123 + i32.const 116 i32.const 7 call $~lib/builtins/abort unreachable @@ -2741,24 +2722,23 @@ local.get $1 else local.get $1 - i32.const -16711936 - i32.and i32.const 8 - i32.rotl + i32.shl local.get $1 - i32.const 16711935 + i32.const 65535 i32.and i32.const 8 - i32.rotr + i32.shr_u i32.or end - i32.store + i32.store16 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setInt64 (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/dataview/DataView#setFloat64 (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2787,37 +2767,45 @@ if i32.const 1360 i32.const 1632 - i32.const 167 + i32.const 103 i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $2 - if (result i64) + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + f64.store else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + i64.reinterpret_f64 + local.tee $3 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $1 + local.get $3 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.tee $1 + local.tee $3 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $1 + local.get $3 i64.const 281470681808895 i64.and i64.const 16 @@ -2825,14 +2813,14 @@ i64.or i64.const 32 i64.rotr + i64.store end - i64.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setUint16 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setFloat32 (param $0 i32) (param $1 f32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2856,44 +2844,55 @@ i32.store local.get $0 i32.load offset=8 - i32.const 2 + i32.const 4 i32.lt_s if i32.const 1360 i32.const 1632 - i32.const 135 + i32.const 95 i32.const 7 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $2 - if (result i32) + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + f32.store else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + i32.reinterpret_f32 + local.tee $0 + i32.const -16711936 + i32.and i32.const 8 - i32.shl - local.get $1 - i32.const 65535 + i32.rotl + local.get $0 + i32.const 16711935 i32.and i32.const 8 - i32.shr_u + i32.rotr i32.or + i32.store end - i32.store16 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2908,51 +2907,89 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 4 - i32.lt_s + i32.const 20 + i32.sub + i32.load offset=16 + local.get $1 + local.get $2 + i32.add + i32.lt_u + local.get $2 + i32.const 1073741820 + i32.gt_u + i32.or if - i32.const 1360 + i32.const 1056 i32.const 1632 - i32.const 142 + i32.const 25 i32.const 7 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + local.get $3 local.get $0 - i32.load offset=4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - i32.const -16711936 - i32.and - i32.const 8 - i32.rotl - local.get $1 - i32.const 16711935 - i32.and - i32.const 8 - i32.rotr - i32.or - end - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2975,57 +3012,21 @@ local.get $0 i32.store local.get $0 - i32.load offset=8 - i32.const 8 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 174 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=4 - local.get $2 - if (result i64) - local.get $1 - else - local.get $1 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $1 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $1 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $1 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - end - i64.store + i32.load + i32.sub global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + call $start:std/dataview + ) (func $start:std/dataview (local $0 i32) (local $1 i32) diff --git a/tests/compiler/std/date.release.wat b/tests/compiler/std/date.release.wat index d97db8a353..b5fe4f437c 100644 --- a/tests/compiler/std/date.release.wat +++ b/tests/compiler/std/date.release.wat @@ -6,14 +6,14 @@ (type $4 (func (param i32))) (type $5 (func (param i32 i32 i32) (result i32))) (type $6 (func (param i64) (result i32))) - (type $7 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) - (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) - (type $10 (func (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i32 i32 i32 i32 i32 i32 i32) (result i64))) + (type $10 (func (param i32 i64))) (type $11 (func (param i32 i32 i32 i64) (result i64))) - (type $12 (func (param i32 i32 i32))) - (type $13 (func (param i32 i32 i32 i32) (result i32))) - (type $14 (func (param i32 i64))) + (type $12 (func (param i32 i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 i64))) + (type $14 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/date/_day (mut i32) (i32.const 0)) (global $~lib/date/_month (mut i32) (i32.const 0)) @@ -257,3005 +257,1261 @@ (data $117 (i32.const 8432) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00\04A\00\00\02A\00\00\02\t") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) - local.get $6 - i64.extend_i32_s - local.get $5 - i32.const 1000 - i32.mul - i64.extend_i32_s - local.get $4 - i32.const 60000 - i32.mul - i64.extend_i32_s - local.get $3 - i32.const 3600000 - i32.mul - i64.extend_i32_s + (func $~lib/date/Date#constructor (param $0 i64) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - i32.const 2 - i32.le_s - i32.sub - local.tee $0 - i32.const 399 i32.const 0 - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - i32.lt_s - select - i32.sub - i32.const 400 - i32.div_s - local.set $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const -3 - i32.const 9 + i32.store offset=4 local.get $1 - i32.const 2 - i32.gt_s - select - i32.add - i32.const 153 - i32.mul - i32.const 2 - i32.add - i32.const 5 - i32.div_u - local.get $2 - i32.add + i32.const 0 + i32.store offset=8 local.get $0 - local.get $3 - i32.const 400 - i32.mul - i32.sub - local.tee $0 - i32.const 365 - i32.mul + i64.const -8640000000000000 + i64.lt_s local.get $0 - i32.const 2 - i32.shr_u - i32.add + i64.const 8640000000000000 + i64.gt_s + i32.or + if + i32.const 1056 + i32.const 1104 + i32.const 131 + i32.const 35 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.const 100 - i32.div_u - i32.sub - i32.add - local.get $3 - i32.const 146097 - i32.mul + call $~lib/date/dateFromEpoch + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + global.get $~lib/date/_month + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + global.get $~lib/date/_day + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 719469 - i32.sub - i64.extend_i32_s - i64.const 86400000 - i64.mul - i64.add - i64.add - i64.add - i64.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/date/dateFromEpoch (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - local.get $0 - i64.const 86399999 - i64.const 0 - local.get $0 - i64.const 0 - i64.lt_s - select - i64.sub - i64.const 86400000 - i64.div_s - i32.wrap_i64 - i32.const 2 - i32.shl - i32.const 2877872 - i32.add - i32.const 3 - i32.or - local.tee $1 - i32.const 146096 - i32.const 0 local.get $1 - i32.const 0 - i32.lt_s - select - i32.sub - i32.const 146097 - i32.div_s - local.set $2 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 - local.get $2 - i32.const 146097 - i32.mul + i32.const 20 i32.sub + local.tee $1 + i32.load offset=4 i32.const 3 - i32.or - i64.extend_i32_u - i64.const 2939745 - i64.mul - local.tee $0 - i32.wrap_i64 - i32.const 11758980 - i32.div_u - local.tee $4 - i32.const 2141 - i32.mul - i32.const 197913 - i32.add - local.set $3 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.get $2 - i32.const 100 - i32.mul - i32.add - local.set $1 - local.get $3 - i32.const 16 - i32.shr_u - local.set $2 - local.get $3 - i32.const 65535 i32.and - i32.const 2141 - i32.div_u - i32.const 1 - i32.add - global.set $~lib/date/_day - local.get $4 - i32.const 306 - i32.ge_u + i32.eq if - local.get $2 - i32.const 12 + local.get $0 + i32.const 20 i32.sub - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - global.set $~lib/date/_month - local.get $1 - ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1392 - call $~lib/rt/itcms/__visit - i32.const 6784 - call $~lib/rt/itcms/__visit - i32.const 6832 - call $~lib/rt/itcms/__visit - i32.const 1200 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 2304 - call $~lib/rt/itcms/__visit - i32.const 3360 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq if local.get $0 - i32.load offset=4 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 i32.const 3 + i32.eq i32.and - i32.const 3 - i32.ne if - i32.const 0 - i32.const 1264 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 end end ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - global.get $~lib/rt/itcms/iter + local.get $1 i32.eq if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - block $__inlined_func$~lib/rt/itcms/Object#unlink$376 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 + block $folding-inner0 + local.get $1 i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 41236 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$376 - end local.get $0 - i32.load offset=8 - local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - i32.store offset=8 + i32.store local.get $2 local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/date/Date.fromString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 72 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 72 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - else - local.get $1 - i32.const 8432 - i32.load - i32.gt_u + i32.shr_u + i32.eqz if - i32.const 1392 - i32.const 1456 - i32.const 21 - i32.const 28 + i32.const 1056 + i32.const 1104 + i32.const 50 + i32.const 33 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 2 - i32.shl - i32.const 8436 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3488 i32.const 0 - i32.const 1536 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 + call $~lib/string/String#indexOf + local.tee $2 + i32.const -1 i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.const 0 local.get $2 - i32.const 2 - i32.shl - i32.add + call $~lib/string/String#substring local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1536 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1536 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1536 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1536 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1536 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 41248 - i32.const 0 - i32.store - i32.const 42816 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 41248 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 41248 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 41248 - i32.const 42820 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 41248 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 41236 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1264 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 41236 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 41236 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1536 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1200 - i32.const 1264 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1200 - i32.const 1536 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1536 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1536 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/date/join (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) - (local $4 i32) - local.get $0 - local.get $1 - i32.const 2 - i32.le_s - i32.sub - local.tee $0 - i32.const 399 - i32.const 0 - local.get $0 - i32.const 0 - i32.lt_s - select - i32.sub - i32.const 400 - i32.div_s - local.set $4 - i64.const 86400000 - i64.const 0 - local.get $3 - i64.const 86400000 - i64.rem_s - local.tee $3 - i64.const 0 - i64.lt_s - select - local.get $3 - i64.add - local.get $1 - i32.const -3 - i32.const 9 - local.get $1 - i32.const 2 - i32.gt_s - select - i32.add - i32.const 153 - i32.mul - i32.const 2 - i32.add - i32.const 5 - i32.div_u - local.get $2 - i32.add - local.get $0 - local.get $4 - i32.const 400 - i32.mul - i32.sub - local.tee $0 - i32.const 365 - i32.mul - local.get $0 - i32.const 2 - i32.shr_u - i32.add - local.get $0 - i32.const 100 - i32.div_u - i32.sub - i32.add - local.get $4 - i32.const 146097 - i32.mul - i32.add - i32.const 719469 - i32.sub - i64.extend_i32_s - i64.const 86400000 - i64.mul - i64.add - ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32$73 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1872 - local.set $2 - br $__inlined_func$~lib/util/number/itoa32$73 - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $3 - select - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $3 - i32.add - local.set $5 - loop $while-continue|0 - local.get $0 - i32.const 10000 - i32.ge_u - if - local.get $0 - i32.const 10000 - i32.rem_u - local.set $4 - local.get $0 - i32.const 10000 - i32.div_u - local.set $0 - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $0 - i32.const 100 - i32.ge_u - if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i32.load - i32.store - local.get $0 - i32.const 100 - i32.div_u - local.set $0 - end - local.get $0 - i32.const 10 - i32.ge_u - if - local.get $5 - local.get $1 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 2 - i32.shl - i32.const 1884 - i32.add - i32.load - i32.store - else - local.get $5 - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 48 - i32.add - i32.store16 - end - local.get $3 - if - local.get $2 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $2 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $1 - local.get $3 - i32.const 4 - i32.ge_u - if (result i32) - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $1 - i64.load - local.get $2 - i64.load - i64.eq - if - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.tee $3 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $3 - local.tee $0 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - if - local.get $1 - i32.load16_u - local.tee $0 - local.get $2 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $0 - local.get $4 - i32.sub - return - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String> - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/date/Date - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|01 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|01 - end - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - unreachable - end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/date - ) - (func $~lib/date/Date#constructor (param $0 i64) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $0 - i64.const -8640000000000000 - i64.lt_s - local.get $0 - i64.const 8640000000000000 - i64.gt_s - i32.or - if - i32.const 1056 - i32.const 1104 - i32.const 131 - i32.const 35 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/date/dateFromEpoch - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - global.get $~lib/date/_month - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - global.get $~lib/date/_day - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i64.const -8640000000000000 - i64.lt_s - local.get $1 - i64.const 8640000000000000 - i64.gt_s - i32.or - if - i32.const 1056 - i32.const 1104 - i32.const 143 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i64.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/date/dateFromEpoch - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.get $~lib/date/_month - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - global.get $~lib/date/_day - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) - (local $1 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i64.const 86400000 - i64.const 0 - local.get $1 - i64.const 0 - i64.lt_s - select - i64.add - i32.wrap_i64 - i32.const 3600000 - i32.div_s - ) - (func $~lib/date/Date#getUTCMinutes (param $0 i32) (result i32) - (local $1 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i64.load offset=16 - i64.const 3600000 - i64.rem_s - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i64.const 3600000 - i64.const 0 - local.get $1 - i64.const 0 - i64.lt_s - select - i64.add - i32.wrap_i64 - i32.const 60000 - i32.div_s - ) - (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32) - (local $1 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i64.load offset=16 - i64.const 60000 - i64.rem_s - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i64.const 60000 - i64.const 0 - local.get $1 - i64.const 0 - i64.lt_s - select - i64.add - i32.wrap_i64 - i32.const 1000 - i32.div_s - ) - (func $~lib/date/Date#getUTCMilliseconds (param $0 i32) (result i32) - (local $1 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i64.load offset=16 - i64.const 1000 - i64.rem_s - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i64.const 1000 - i64.const 0 - local.get $1 - i64.const 0 - i64.lt_s - select - i64.add - i32.wrap_i64 - ) - (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCMilliseconds - i32.sub - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.sub - i32.const 1000 - i32.mul - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.sub - i32.const 60000 - i32.mul - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $3 + loop $for-loop|0 + local.get $3 + i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/string/String#charCodeAt$386 + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#charCodeAt$386 + end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + block $for-break0 + local.get $0 + i32.const 90 + i32.eq + br_if $for-break0 + local.get $0 + i32.const 45 + i32.eq + local.get $0 + i32.const 43 + i32.eq + i32.or + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + i32.eq + if + i32.const 1056 + i32.const 1104 + i32.const 74 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 0 + local.get $2 + i32.const 3520 + local.get $3 + i32.const 1 + i32.add + local.tee $5 + call $~lib/string/String#indexOf + local.tee $7 + i32.const -1 + i32.xor + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + local.get $7 + call $~lib/string/String#substring + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/util/string/strtol + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $7 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/util/string/strtol + local.get $5 + i32.const 60 + i32.mul + i32.add + i32.const 60000 + i32.mul + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.const 1 + i32.add + call $~lib/string/String#substring@varargs + local.tee $5 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/util/string/strtol + i32.const 3600000 + i32.mul + end + local.tee $5 + i32.sub + local.get $5 + local.get $0 + i32.const 45 + i32.eq + select + local.set $5 + br $for-break0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $for-loop|0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + local.get $3 + call $~lib/string/String#substring + local.tee $2 + i32.store offset=8 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3520 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.tee $2 + i32.const 1 + i32.le_s + if + i32.const 1056 + i32.const 1104 + i32.const 96 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $3 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/util/string/strtol + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $7 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/util/string/strtol + local.set $7 + local.get $2 + i32.const 3 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 3552 + i32.const 0 + call $~lib/string/String#indexOf + local.tee $0 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + local.get $0 + call $~lib/string/String#substring + local.tee $6 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/util/string/strtol + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=44 + local.get $0 + i32.const 1 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + block $__inlined_func$~lib/string/String#substr$387 (result i32) + i32.const 3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 + local.get $0 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $8 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + end + local.get $0 + i32.sub + local.tee $8 + local.get $8 + i32.const 3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $8 + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + br $__inlined_func$~lib/string/String#substr$387 + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $10 + i32.store offset=4 + local.get $10 + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $8 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + end + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store + block $__inlined_func$~lib/string/String#padEnd$388 + i32.const 1868 + i32.load + i32.const -2 + i32.and + local.tee $8 + i32.eqz + local.get $10 + i32.const 6 + i32.gt_u + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#padEnd$388 + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $10 + memory.copy + i32.const 6 + local.get $10 + i32.sub + local.tee $0 + local.get $8 + i32.gt_u + if + local.get $0 + local.get $0 + i32.const 2 + i32.sub + local.get $8 + i32.div_u + local.get $8 + i32.mul + local.tee $0 + i32.sub + local.set $11 + local.get $2 + local.get $10 + i32.add + local.set $12 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.gt_u + if + local.get $4 + local.get $12 + i32.add + i32.const 1872 + local.get $8 + memory.copy + local.get $4 + local.get $8 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $2 + local.get $10 + i32.add + local.get $0 + i32.add + i32.const 1872 + local.get $11 + memory.copy + else + local.get $2 + local.get $10 + i32.add + i32.const 1872 + local.get $0 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.set $0 + end + local.get $0 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtol + local.set $4 + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/strtol + local.set $6 + end + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1616 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtol i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.tee $8 + i32.const 2 + i32.ge_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtol + local.set $1 + local.get $8 + i32.const 3 + i32.ge_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtol + else + i32.const 1 + end + else + i32.const 1 + end + local.set $0 + local.get $1 + local.get $0 + local.get $3 + local.get $7 + local.get $6 + local.get $4 + call $~lib/date/epochMillis + local.get $5 + i64.extend_i32_s + i64.sub + call $~lib/date/Date#constructor + global.get $~lib/memory/__stack_pointer + i32.const 72 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.load offset=16 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $1 - local.get $0 - call $~lib/date/Date#getUTCHours - i32.sub - i32.const 3600000 - i32.mul - i64.extend_i32_s - i64.add - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + i32.const 1200 + i32.const 1264 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.eq + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 local.get $0 - i64.load offset=16 - call $~lib/date/join - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/date/Date#setUTCMonth@varargs (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 + i32.const 1536 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $2 + else + local.get $5 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - local.tee $1 - local.get $0 - i32.load offset=4 i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $3 - local.get $1 - local.get $2 - local.get $0 - i64.load offset=16 - call $~lib/date/join - call $~lib/date/Date#setTime + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s + local.get $5 + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1536 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 i32.load - i32.eq + local.set $6 + local.get $5 + i32.const 4 + i32.add + i32.const 15 + i32.and if - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 0 + i32.const 1536 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 i32.load offset=8 local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 local.get $2 local.get $3 - local.get $0 - i64.load offset=16 - call $~lib/date/join - call $~lib/date/Date#setTime - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) (func $~lib/date/stringify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3408,224 +1664,374 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/date/Date#toISOString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub + i32.const -64 + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if + block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - return - end - local.get $4 - i32.eqz - if + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 64 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 3456 - local.get $0 - select - return - end - loop $for-loop|0 + i32.load + local.tee $1 + i32.const 0 + i32.lt_s + local.tee $3 local.get $1 - local.get $3 - i32.gt_s + i32.const 10000 + i32.ge_s + i32.or if global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1616 + i32.const 1648 local.get $3 - i32.const 2 - i32.shl + select + local.tee $3 + i32.store + local.get $1 + i32.const 31 + i32.shr_s + local.tee $4 + local.get $1 + local.get $4 i32.add - i32.load - local.tee $5 + i32.xor + i32.const 6 + call $~lib/date/stringify + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=4 - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $2 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $2 - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 3456 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3452 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - local.get $4 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $4 - i32.lt_s - if + i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 + local.get $4 i32.store offset=4 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $5 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + block $__inlined_func$~lib/string/String#concat$385 + local.get $4 i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u + i32.const -2 + i32.and local.tee $6 - i32.const 1 - i32.shl - memory.copy - local.get $3 - local.get $6 - i32.add - local.set $3 - end - local.get $1 - if local.get $5 - local.get $3 - i32.const 1 - i32.shl i32.add - i32.const 3456 + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + local.set $1 + br $__inlined_func$~lib/string/String#concat$385 + end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.shl - memory.copy + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 local.get $1 local.get $3 + local.get $5 + memory.copy + local.get $1 + local.get $5 i32.add - local.set $3 + local.get $4 + local.get $6 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $2 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer + else + local.get $1 + i32.const 4 + call $~lib/date/stringify + local.set $1 end + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.const 2 + call $~lib/date/stringify + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $5 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $6 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.const 3 + call $~lib/date/stringify + local.tee $0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 3616 + local.get $1 + i32.store + i32.const 3616 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 3624 + local.get $2 + i32.store + i32.const 3616 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 3632 + local.get $3 + i32.store + i32.const 3616 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 3640 + local.get $4 + i32.store + i32.const 3616 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 3648 + local.get $5 + i32.store + i32.const 3616 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 3656 + local.get $6 + i32.store + i32.const 3616 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3664 + local.get $0 + i32.store + i32.const 3616 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + i32.const 3616 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const -64 + i32.sub + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $5 - local.get $3 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount i32.const 1 - i32.shl i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy + global.set $~lib/rt/itcms/visitCount end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3646,368 +2052,484 @@ i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + local.get $1 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $1 + i32.load offset=8 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end global.get $~lib/memory/__stack_pointer - i32.const 3456 + local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $2 + local.get $3 local.get $1 - call $~lib/util/string/joinStringArray + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/date/Date#toISOString (param $0 i32) (result i32) + (func $~lib/util/string/strtol (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const -64 - i32.add + i32.const 4 + i32.sub global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 64 - memory.fill - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.tee $1 - i32.const 0 - i32.lt_s - local.tee $3 - local.get $1 - i32.const 10000 - i32.ge_s - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.const 1648 - local.get $3 - select - local.tee $3 - i32.store - local.get $1 - i32.const 31 - i32.shr_s - local.tee $4 - local.get $1 - local.get $4 - i32.add - i32.xor - i32.const 6 - call $~lib/date/stringify - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - block $__inlined_func$~lib/string/String#concat$385 - local.get $4 - i32.const 20 + i32.eqz + br_if $folding-inner0 + local.get $0 + local.tee $2 + i32.load16_u + local.set $0 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$164 (result i32) + local.get $0 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $0 + i32.const 9 i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $6 - local.get $5 - i32.add - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - local.set $1 - br $__inlined_func$~lib/string/String#concat$385 + i32.const 4 + i32.le_u + i32.or + local.get $0 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$164 + drop + i32.const 1 + local.get $0 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$164 + drop + block $break|0 + block $case0|0 + local.get $0 + i32.const 5760 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8232 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8233 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8239 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 8287 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 12288 + i32.eq + br_if $case0|0 + local.get $0 + i32.const 65279 + i32.eq + br_if $case0|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$164 end - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 + end + if + local.get $2 i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $3 - local.get $5 - memory.copy - local.get $1 - local.get $5 - i32.add - local.get $4 - local.get $6 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $2 + i32.load16_u + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - else - local.get $1 - i32.const 4 - call $~lib/date/stringify - local.set $1 end - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - i32.const 2 - call $~lib/date/stringify - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - i32.const 2 - call $~lib/date/stringify - local.tee $3 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 2 - call $~lib/date/stringify - local.tee $4 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 2 - call $~lib/date/stringify - local.tee $5 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 1 + local.set $4 local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 2 - call $~lib/date/stringify + i32.const 45 + i32.eq local.tee $6 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMilliseconds - i32.const 3 - call $~lib/date/stringify - local.tee $0 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 3616 - local.get $1 - i32.store - i32.const 3616 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.eqz + br_if $folding-inner0 + i32.const -1 + i32.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $0 + end + i32.const 48 + i32.eq local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 3624 - local.get $2 - i32.store - i32.const 3616 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - i32.const 3632 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $2 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $0 + i32.const 98 + i32.ne + if + local.get $0 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $0 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 2 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 16 + local.set $3 + end + end local.get $3 - i32.store - i32.const 3616 + i32.const 10 local.get $3 + select + local.set $6 + local.get $1 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store + i32.sub + local.set $7 + loop $while-continue|2 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 + i32.sub + local.tee $0 + i32.const 10 + i32.ge_u + if + local.get $3 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $3 + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $0 + end + local.get $0 + local.get $6 + i32.ge_u + if + local.get $1 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $6 + i32.mul + local.get $0 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 + end + end + end global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 - i32.store offset=4 - i32.const 3640 - local.get $4 - i32.store - i32.const 3616 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 3648 - local.get $5 - i32.store - i32.const 3616 local.get $5 + i32.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 3656 - local.get $6 - i32.store - i32.const 3616 - local.get $6 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 3664 - local.get $0 - i32.store - i32.const 3616 - local.get $0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 60000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 60000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 1000 + i32.div_s + ) + (func $~lib/date/Date#getUTCMinutes (param $0 i32) (result i32) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 3600000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 3600000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 60000 + i32.div_s + ) + (func $~lib/date/Date#getUTCMilliseconds (param $0 i32) (result i32) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3616 - i32.store - i32.const 3616 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - global.get $~lib/memory/__stack_pointer - i32.const -64 - i32.sub - global.set $~lib/memory/__stack_pointer - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i64.load offset=16 + i64.const 1000 + i64.rem_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 1000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) + (local $2 i64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4026,79 +2548,36 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $2 local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + local.get $0 + call $~lib/date/Date#getUTCMilliseconds + i32.sub + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/date/Date#toDateString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32) + (local $1 i64) global.get $~lib/memory/__stack_pointer - i32.const 52 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4114,245 +2593,207 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 52 - memory.fill + i32.store global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $2 - i32.const 4640 - i32.const 28 - memory.copy - local.get $2 + local.get $0 i32.store + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 48 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 5072 - i32.const 48 - memory.copy + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i64.const 86400000 + i64.const 0 + local.get $1 + i64.const 0 + i64.lt_s + select + i64.add + i32.wrap_i64 + i32.const 3600000 + i32.div_s + ) + (func $~lib/date/Date#setUTCMonth@varargs (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + local.tee $1 + local.get $0 + i32.load offset=4 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $2 + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) + local.get $6 + i64.extend_i32_s + local.get $5 + i32.const 1000 + i32.mul + i64.extend_i32_s + local.get $4 + i32.const 60000 + i32.mul + i64.extend_i32_s local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 3600000 + i32.mul + i64.extend_i32_s local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.const 3 - i32.lt_s - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - local.set $6 local.get $1 - i32.const 1579 - i32.add - i32.load8_u - local.get $5 - i32.const 3 - i32.const 0 - local.get $6 - select - i32.sub - i32.const 4 - i32.div_s - local.get $5 - i32.const 99 - i32.const 0 - local.get $6 - select - i32.sub - i32.const 100 - i32.div_s + i32.const 2 + i32.le_s i32.sub - local.get $5 + local.tee $0 i32.const 399 i32.const 0 - local.get $6 + local.get $0 + i32.const 0 + i32.lt_s select i32.sub i32.const 400 i32.div_s - i32.add - local.get $5 - i32.add - i32.add - local.get $4 - i32.add - i32.const 7 - i32.rem_s - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 31 - i32.shr_s - local.tee $6 - local.get $0 - i32.add - local.get $6 - i32.xor - i32.const 4 - call $~lib/date/stringify - local.tee $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 + local.set $3 + local.get $1 + i32.const -3 + i32.const 9 local.get $1 - i32.const 1 - i32.sub i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 7 - i32.const 0 - local.get $5 - i32.const 0 - i32.lt_s + i32.gt_s select - local.get $5 i32.add + i32.const 153 + i32.mul i32.const 2 - i32.shl i32.add - i32.load - local.tee $2 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - call $~lib/date/stringify - local.tee $3 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.div_u local.get $2 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 5200 - i32.const 5232 + i32.add local.get $0 - i32.const 0 - i32.lt_s - select - local.tee $0 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=48 - i32.const 5152 - local.get $2 - i32.store - i32.const 5152 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=48 - i32.const 5156 - local.get $1 - i32.store - i32.const 5152 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=48 - i32.const 5160 - local.get $3 - i32.store - i32.const 5152 local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=48 - i32.const 5164 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul local.get $0 - i32.store - i32.const 5152 + i32.const 2 + i32.shr_u + i32.add local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=48 - i32.const 5168 - local.get $6 - i32.store - i32.const 5152 - local.get $6 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5152 - i32.store offset=8 - i32.const 5152 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - global.get $~lib/memory/__stack_pointer - i32.const 52 + i32.const 100 + i32.div_u + i32.sub i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.const 146097 + i32.mul + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + i64.add + i64.add + i64.add ) - (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4368,106 +2809,55 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 32 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 2 - call $~lib/date/stringify - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMinutes - i32.const 2 - call $~lib/date/stringify - local.tee $2 - i32.store offset=8 + local.get $1 + i64.const -8640000000000000 + i64.lt_s + local.get $1 + i64.const 8640000000000000 + i64.gt_s + i32.or + if + i32.const 1056 + i32.const 1104 + i32.const 143 + i32.const 28 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 2 - call $~lib/date/stringify - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 + i64.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 5456 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=28 - i32.const 5456 - local.get $1 i32.store - i32.const 5456 + local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5456 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=28 - i32.const 5464 - local.get $2 - i32.store - i32.const 5456 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5456 + call $~lib/date/dateFromEpoch i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=28 - i32.const 5472 - local.get $0 i32.store - i32.const 5456 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link + global.get $~lib/date/_month + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5456 + local.get $0 i32.store - i32.const 5456 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.get $0 + global.get $~lib/date/_day + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/date/Date#toUTCString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 76 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4482,316 +2872,281 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 76 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $2 - i32.const 5824 - i32.const 28 - memory.copy - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 48 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 6256 - i32.const 48 - memory.copy - local.get $3 - i32.store offset=4 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store + local.get $1 local.get $0 - i32.load offset=4 - local.set $1 + i32.load offset=12 + i32.ge_u + if + i32.const 1392 + i32.const 6736 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - i32.load - local.tee $5 - local.get $1 - i32.const 3 - i32.lt_s - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - local.set $7 + i32.load offset=4 local.get $1 - i32.const 1579 - i32.add - i32.load8_u - local.get $6 - i32.const 3 - i32.const 0 - local.get $7 - select - i32.sub - i32.const 4 - i32.div_s - local.get $6 - i32.const 99 - i32.const 0 - local.get $7 - select - i32.sub - i32.const 100 - i32.div_s - i32.sub - local.get $6 - i32.const 399 - i32.const 0 - local.get $7 - select - i32.sub - i32.const 400 - i32.div_s - i32.add - local.get $6 - i32.add - i32.add - local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 7 - i32.rem_s - local.set $6 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 6832 + i32.const 6736 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 31 - i32.shr_s - local.tee $7 - local.get $5 + i32.const 8 i32.add - local.get $7 - i32.xor - i32.const 4 - call $~lib/date/stringify - local.tee $7 - i32.store offset=12 + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 + i32.store local.get $1 - i32.const 1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $0 + i32.const 20 i32.sub - i32.const 2 - i32.shl - i32.add - i32.load + i32.load offset=16 + i32.const 1 + i32.shr_u local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 local.get $2 - i32.const 7 i32.const 0 - local.get $6 + local.get $2 i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $4 + local.get $3 + local.get $2 + local.get $2 + local.get $3 i32.lt_s select - local.get $6 - i32.add - i32.const 2 + i32.const 1 i32.shl - i32.add - i32.load local.tee $2 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 2 - call $~lib/date/stringify + i32.sub local.tee $3 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCHours - i32.const 2 - call $~lib/date/stringify - local.tee $4 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + return + end + local.get $4 + i32.eqz + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/date/Date#getUTCMinutes + local.get $3 i32.const 2 - call $~lib/date/stringify - local.tee $6 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 local.get $0 - call $~lib/date/Date#getUTCSeconds - i32.const 2 - call $~lib/date/stringify - local.tee $0 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer + local.get $4 + i32.add local.get $3 - i32.store offset=44 + memory.copy global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - i32.const 1616 - i32.const 3456 - local.get $5 - i32.const 0 - i32.lt_s - select - local.tee $5 - i32.store offset=52 + ) + (func $~lib/rt/__newArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=56 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=60 + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=64 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=68 - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=72 - i32.const 6368 - local.get $2 + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 i32.store - i32.const 6368 + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=72 - i32.const 6372 - local.get $3 i32.store - i32.const 6368 - local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=72 - i32.const 6376 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link local.get $1 - i32.store - i32.const 6368 + local.get $2 + i32.store offset=4 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=72 - i32.const 6380 - local.get $5 - i32.store - i32.const 6368 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 + local.get $3 i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=72 - i32.const 6384 - local.get $7 - i32.store - i32.const 6368 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=72 - i32.const 6392 - local.get $4 - i32.store - i32.const 6368 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=72 - i32.const 6400 - local.get $6 + local.get $0 i32.store - i32.const 6368 - local.get $6 + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=72 - i32.const 6408 + i32.store local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 i32.store - i32.const 6368 local.get $0 + local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 6368 - i32.store offset=8 - i32.const 6368 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 76 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -4909,9 +3264,194 @@ global.set $~lib/memory/__stack_pointer i32.const -1 ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 3456 + i32.store + local.get $0 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.sub + i32.const 1000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.sub + i32.const 60000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $0 + call $~lib/date/Date#getUTCHours + i32.sub + i32.const 3600000 + i32.mul + i64.extend_i32_s + i64.add + call $~lib/date/Date#setTime + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4934,98 +3474,46 @@ local.get $0 i32.store local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $3 - i32.gt_s - select - local.tee $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $4 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - local.get $4 - i32.sub - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - return - end - local.get $4 - i32.eqz - local.get $2 - local.get $1 - i32.const 1 - i32.shl + i32.load i32.eq - i32.and if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - local.get $4 - i32.add + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 local.get $3 - memory.copy + local.get $0 + i64.load offset=16 + call $~lib/date/join + call $~lib/date/Date#setTime global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) (func $~lib/string/String#substring@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -5060,860 +3548,2070 @@ i32.const 2147483647 local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#substring - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#substring + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $~lib/util/string/strtol (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s + local.get $1 + i32.eqz if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1536 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $folding-inner0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - i32.eqz - br_if $folding-inner0 - local.get $0 - local.tee $2 - i32.load16_u - local.set $0 - loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$164 (result i32) - local.get $0 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $0 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - local.get $0 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$164 - drop - i32.const 1 - local.get $0 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$164 - drop - block $break|0 - block $case0|0 - local.get $0 - i32.const 5760 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 8232 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 8233 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 8239 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 8287 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 12288 - i32.eq - br_if $case0|0 - local.get $0 - i32.const 65279 - i32.eq - br_if $case0|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$164 - end - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.add - local.tee $2 - i32.load16_u - local.set $0 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|0 - end - end - i32.const 1 - local.set $4 - local.get $0 - i32.const 45 - i32.eq - local.tee $6 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.const 43 - i32.eq - i32.or - if (result i32) - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - br_if $folding-inner0 - i32.const -1 - i32.const 1 - local.get $6 - select - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.tee $2 - i32.load16_u - else - local.get $0 - end - i32.const 48 - i32.eq + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.const 2 - i32.gt_s - i32.and - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $2 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $0 - i32.const 98 - i32.ne - if - local.get $0 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $0 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - i32.const 2 - local.set $3 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - i32.const 8 - local.set $3 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - i32.const 16 - local.set $3 - end - end local.get $3 - i32.const 10 - local.get $3 - select - local.set $6 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 i32.sub - local.set $7 - loop $while-continue|2 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $0 - if - block $while-break|2 - local.get $2 - i32.load16_u - local.tee $3 - i32.const 48 - i32.sub - local.tee $0 - i32.const 10 - i32.ge_u - if - local.get $3 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - if (result i32) - local.get $3 - i32.const 55 - i32.sub - else - local.get $3 - i32.const 87 - i32.sub - local.get $3 - local.get $3 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - end - local.set $0 - end - local.get $0 - local.get $6 - i32.ge_u - if - local.get $1 - local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 - end - local.get $5 - local.get $6 - i32.mul - local.get $0 - i32.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|2 - end - end + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.mul - return + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1536 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store - local.get $1 local.get $0 - i32.load offset=8 - local.tee $2 + local.get $5 i32.const 2 - i32.shr_u - i32.gt_u + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $1 - i32.const 268435455 - i32.gt_u + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz if - i32.const 6784 - i32.const 6736 - i32.const 19 - i32.const 48 + i32.const 0 + i32.const 1264 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$376 local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$363 - i32.const 1073741820 - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $3 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if local.get $0 - i32.load - local.tee $2 - i32.const 20 - i32.sub - local.tee $4 - i32.load - i32.const -4 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 41236 + i32.lt_u i32.and - i32.const 16 - i32.sub - i32.le_u + i32.eqz if - local.get $4 - local.get $3 - i32.store offset=16 - local.get $2 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$363 + i32.const 0 + i32.const 1264 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.get $4 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $2 - local.get $3 - local.get $4 - i32.load offset=16 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_u - select - memory.copy + br $__inlined_func$~lib/rt/itcms/Object#unlink$376 end - local.get $1 - local.get $2 - i32.ne + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz if - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 i32.const 0 - call $~lib/rt/itcms/__link + i32.const 1264 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 + local.get $1 + local.get $2 i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 8432 + i32.load + i32.gt_u + if + i32.const 1392 + i32.const 1456 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 8436 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.store offset=8 + local.get $1 local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 36 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner4 - block $folding-inner3 - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 36 - memory.fill - local.get $2 - i32.eqz - br_if $folding-inner1 - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/__newArray - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=12 - i32.eqz - if - local.get $2 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1 - i32.store offset=12 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/date/Date + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 local.get $0 - i32.store - local.get $2 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 + i32.sub + i32.load offset=16 i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner4 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $8 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - if - local.get $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - i32.const 3456 - i32.store - br $folding-inner4 - end - else - local.get $6 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $8 - local.get $6 - local.get $8 - i32.lt_s - select - local.tee $3 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $4 - i32.const 0 local.set $1 - loop $for-loop|0 + loop $while-continue|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.lt_u if - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=12 - local.get $5 local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $2 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 1 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 i32.add - local.set $1 - br $for-loop|0 + local.set $0 + br $while-continue|0 end end - br $folding-inner4 + return end global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=20 - loop $while-continue|1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=24 - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|01 local.get $1 - local.get $3 - call $~lib/string/String#indexOf - local.tee $9 - i32.const -1 - i32.xor + local.get $2 + i32.lt_u if - local.get $9 - local.get $3 - i32.sub - local.tee $7 - i32.const 0 - i32.gt_s + local.get $1 + i32.load + local.tee $3 if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.shl - local.tee $10 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=28 - local.get $7 - local.get $0 local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $10 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=24 - local.get $2 - local.get $7 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3456 - call $~lib/array/Array<~lib/string/String>#push + call $~lib/rt/itcms/__visit end - local.get $5 - i32.const 1 - i32.add - local.tee $5 - local.get $8 - i32.eq - br_if $folding-inner3 - local.get $4 - local.get $9 + local.get $1 + i32.const 4 i32.add - local.set $3 - br $while-continue|1 + local.set $1 + br $while-continue|01 end end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=24 - local.get $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - br $folding-inner3 - end - local.get $6 - local.get $3 - i32.sub - local.tee $1 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + unreachable + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/join (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 2 + i32.le_s + i32.sub + local.tee $0 + i32.const 399 + i32.const 0 + local.get $0 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 400 + i32.div_s + local.set $4 + i64.const 86400000 + i64.const 0 + local.get $3 + i64.const 86400000 + i64.rem_s + local.tee $3 + i64.const 0 + i64.lt_s + select + local.get $3 + i64.add + local.get $1 + i32.const -3 + i32.const 9 + local.get $1 + i32.const 2 + i32.gt_s + select + i32.add + i32.const 153 + i32.mul + i32.const 2 + i32.add + i32.const 5 + i32.div_u + local.get $2 + i32.add + local.get $0 + local.get $4 + i32.const 400 + i32.mul + i32.sub + local.tee $0 + i32.const 365 + i32.mul + local.get $0 + i32.const 2 + i32.shr_u + i32.add + local.get $0 + i32.const 100 + i32.div_u + i32.sub + i32.add + local.get $4 + i32.const 146097 + i32.mul + i32.add + i32.const 719469 + i32.sub + i64.extend_i32_s + i64.const 86400000 + i64.mul + i64.add + ) + (func $~lib/date/Date#toUTCString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 76 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 5824 + i32.const 28 + memory.copy + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 6256 + i32.const 48 + memory.copy + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $3 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + i32.load + local.tee $5 + local.get $3 + i32.const 3 + i32.lt_s + i32.sub + local.tee $6 + i32.const 3 + i32.const 0 + local.get $6 + i32.const 0 + i32.lt_s + local.tee $7 + select + i32.sub + i32.const 4 + i32.div_s + local.get $6 + i32.const 99 + i32.const 0 + local.get $7 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $6 + i32.const 399 + i32.const 0 + local.get $7 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $6 + i32.add + i32.add + local.get $4 + i32.add + i32.const 7 + i32.rem_s + local.tee $6 + i32.const 0 + i32.lt_s + select + local.get $6 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 31 + i32.shr_s + local.tee $7 + local.get $5 + local.get $7 + i32.add + i32.xor + i32.const 4 + call $~lib/date/stringify + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $4 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $6 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.const 3456 + local.get $5 + i32.const 0 + i32.lt_s + select + local.tee $5 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=72 + i32.const 6368 + local.get $1 + i32.store + i32.const 6368 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=72 + i32.const 6372 + local.get $3 + i32.store + i32.const 6368 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=72 + i32.const 6376 + local.get $2 + i32.store + i32.const 6368 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=72 + i32.const 6380 + local.get $5 + i32.store + i32.const 6368 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=72 + i32.const 6384 + local.get $7 + i32.store + i32.const 6368 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=72 + i32.const 6392 + local.get $4 + i32.store + i32.const 6368 + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=72 + i32.const 6400 + local.get $6 + i32.store + i32.const 6368 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=72 + i32.const 6408 + local.get $0 + i32.store + i32.const 6368 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 6368 + i32.store offset=8 + i32.const 6368 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/date/Date#toDateString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 52 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 52 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 4640 + i32.const 28 + memory.copy + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 5072 + i32.const 48 + memory.copy + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + i32.const 0 + local.get $1 + i32.const 1579 + i32.add + i32.load8_u + local.get $0 + i32.load + local.tee $0 + local.get $1 + i32.const 3 + i32.lt_s + i32.sub + local.tee $5 + i32.const 3 + i32.const 0 + local.get $5 + i32.const 0 + i32.lt_s + local.tee $6 + select + i32.sub + i32.const 4 + i32.div_s + local.get $5 + i32.const 99 + i32.const 0 + local.get $6 + select + i32.sub + i32.const 100 + i32.div_s + i32.sub + local.get $5 + i32.const 399 + i32.const 0 + local.get $6 + select + i32.sub + i32.const 400 + i32.div_s + i32.add + local.get $5 + i32.add + i32.add + local.get $4 + i32.add + i32.const 7 + i32.rem_s + local.tee $5 + i32.const 0 + i32.lt_s + select + local.get $5 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 31 + i32.shr_s + local.tee $6 + local.get $0 + local.get $6 + i32.add + i32.xor + i32.const 4 + call $~lib/date/stringify + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/date/stringify + local.tee $3 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.const 5232 + local.get $0 + i32.const 0 + i32.lt_s + select + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + i32.const 5152 + local.get $2 + i32.store + i32.const 5152 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + i32.const 5156 + local.get $1 + i32.store + i32.const 5152 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=48 + i32.const 5160 + local.get $3 + i32.store + i32.const 5152 + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + i32.const 5164 + local.get $0 + i32.store + i32.const 5152 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=48 + i32.const 5168 + local.get $6 + i32.store + i32.const 5152 + local.get $6 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5152 + i32.store offset=8 + i32.const 5152 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 52 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $1 + local.get $3 + i32.const 4 + i32.ge_u + if (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $3 + local.tee $0 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 + local.get $2 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $0 + local.get $4 + i32.sub + return + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String#split@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#split + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 41248 + i32.const 0 + i32.store + i32.const 42816 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 41248 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 41248 + i32.add i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=32 - local.get $4 - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=24 - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3456 - call $~lib/array/Array<~lib/string/String>#push - end - br $folding-inner4 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 41248 + i32.const 42820 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 41248 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1536 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1392 + call $~lib/rt/itcms/__visit + i32.const 6784 + call $~lib/rt/itcms/__visit + i32.const 6832 + call $~lib/rt/itcms/__visit + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 2304 + call $~lib/rt/itcms/__visit + i32.const 3360 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end - i32.const 0 - call $~lib/rt/__newArray - local.set $2 - br $folding-inner4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 36 - i32.add - global.set $~lib/memory/__stack_pointer + end + ) + (func $~lib/date/dateFromEpoch (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i64.const 86399999 + i64.const 0 + local.get $0 + i64.const 0 + i64.lt_s + select + i64.sub + i64.const 86400000 + i64.div_s + i32.wrap_i64 + i32.const 2 + i32.shl + i32.const 2877872 + i32.add + i32.const 3 + i32.or + local.tee $1 + i32.const 146096 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.sub + i32.const 146097 + i32.div_s + local.set $2 + local.get $1 + local.get $2 + i32.const 146097 + i32.mul + i32.sub + i32.const 3 + i32.or + i64.extend_i32_u + i64.const 2939745 + i64.mul + local.tee $0 + i32.wrap_i64 + i32.const 11758980 + i32.div_u + local.tee $4 + i32.const 2141 + i32.mul + i32.const 197913 + i32.add + local.set $3 + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.get $2 + i32.const 100 + i32.mul + i32.add + local.set $1 + local.get $3 + i32.const 16 + i32.shr_u + local.set $2 + local.get $3 + i32.const 65535 + i32.and + i32.const 2141 + i32.div_u + i32.const 1 + i32.add + global.set $~lib/date/_day + local.get $4 + i32.const 306 + i32.ge_u + if local.get $2 - return + i32.const 12 + i32.sub + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + global.set $~lib/date/_month + local.get $1 + ) + (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCHours + i32.const 2 + call $~lib/date/stringify + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCMinutes + i32.const 2 + call $~lib/date/stringify + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/date/Date#getUTCSeconds + i32.const 2 + call $~lib/date/stringify + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + i32.const 5456 + local.get $1 + i32.store + i32.const 5456 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + i32.const 5464 + local.get $2 + i32.store + i32.const 5456 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + i32.const 5472 + local.get $0 + i32.store + i32.const 5456 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store + i32.const 5456 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 32 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/string/String#split@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5928,41 +5626,164 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 6784 + i32.const 6736 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$363 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$363 end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 i32.const 0 - local.set $1 + call $~lib/rt/itcms/__link end - i32.const 2147483647 - local.set $2 + local.get $0 + local.get $3 + i32.store offset=8 end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#split + i32.store + local.get $0 + i32.load offset=12 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/date + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5977,59 +5798,169 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3456 + return + end + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 3456 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store offset=4 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $2 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $2 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end i32.const 0 - i32.store + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 + i32.const 3456 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.const 3452 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + local.get $4 + i32.mul i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1392 - i32.const 6736 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $6 + i32.add + local.set $3 + end + local.get $1 + if + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3456 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $3 + i32.add + local.set $3 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 + local.get $4 i32.const 2 i32.shl i32.add @@ -6037,729 +5968,855 @@ local.tee $0 i32.store offset=4 local.get $0 - i32.eqz if - i32.const 6832 - i32.const 6736 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/date/Date.fromString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 72 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 72 - memory.fill global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u - i32.eqz - if - i32.const 1056 - i32.const 1104 - i32.const 50 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3488 - i32.const 0 - call $~lib/string/String#indexOf - local.tee $2 - i32.const -1 - i32.xor - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - local.get $2 - call $~lib/string/String#substring - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 1 - i32.add - call $~lib/string/String#substring@varargs - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner4 + block $folding-inner3 + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 8468 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 36 + memory.fill local.get $2 - i32.store - block $__inlined_func$~lib/string/String#charCodeAt$386 - local.get $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 + i32.eqz + br_if $folding-inner1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer i32.const 1 - i32.shr_u - i32.ge_u + call $~lib/rt/__newArray + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + i32.eqz if + local.get $2 + i32.const 1 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $0 - br $__inlined_func$~lib/string/String#charCodeAt$386 + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.store offset=12 end + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 + i32.store + local.get $2 + i32.load offset=4 + local.get $0 + i32.store + local.get $2 + local.get $0 i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $0 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + br $folding-inner4 end - block $for-break0 - local.get $0 - i32.const 90 - i32.eq - br_if $for-break0 - local.get $0 - i32.const 45 - i32.eq - local.get $0 - i32.const 43 - i32.eq - i32.or + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $8 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + if + local.get $6 + i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u i32.const 1 - i32.sub - i32.eq - if - i32.const 1056 - i32.const 1104 - i32.const 74 - i32.const 13 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store - i32.const 0 + i32.store offset=4 local.get $2 - i32.const 3520 + i32.load offset=4 + i32.const 3456 + i32.store + br $folding-inner4 + end + else + local.get $6 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $8 + local.get $6 + local.get $8 + i32.lt_s + select + local.tee $3 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 local.get $3 - i32.const 1 - i32.add - local.tee $5 - call $~lib/string/String#indexOf - local.tee $7 - i32.const -1 - i32.xor - if (result i32) + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + local.get $5 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 i32.store + local.get $2 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=20 + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $0 + local.get $1 + local.get $3 + call $~lib/string/String#indexOf + local.tee $9 + i32.const -1 + i32.xor + if + local.get $9 + local.get $3 + i32.sub + local.tee $7 + i32.const 0 + i32.gt_s + if global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $5 local.get $7 - call $~lib/string/String#substring - local.tee $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/util/string/strtol - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 + i32.shl + local.tee $10 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=28 local.get $7 + local.get $0 + local.get $3 i32.const 1 + i32.shl i32.add - call $~lib/string/String#substring@varargs - local.tee $7 - i32.store offset=16 + local.get $10 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $7 - i32.store + i32.store offset=24 + local.get $2 local.get $7 - call $~lib/util/string/strtol - local.get $5 - i32.const 60 - i32.mul - i32.add - i32.const 60000 - i32.mul + call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer local.get $2 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.store offset=4 local.get $2 - local.get $3 - i32.const 1 - i32.add - call $~lib/string/String#substring@varargs - local.tee $5 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - call $~lib/util/string/strtol - i32.const 3600000 - i32.mul + i32.const 3456 + call $~lib/array/Array<~lib/string/String>#push end - local.tee $5 - i32.sub local.get $5 - local.get $0 - i32.const 45 + i32.const 1 + i32.add + local.tee $5 + local.get $8 i32.eq - select - local.set $5 - br $for-break0 + br_if $folding-inner3 + local.get $4 + local.get $9 + i32.add + local.set $3 + br $while-continue|1 end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 local.get $3 - call $~lib/string/String#substring - local.tee $2 - i32.store offset=8 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3520 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.tee $2 - i32.const 1 - i32.le_s - if - i32.const 1056 - i32.const 1104 - i32.const 96 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $3 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - call $~lib/util/string/strtol - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $7 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - call $~lib/util/string/strtol - local.set $7 - local.get $2 - i32.const 3 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 3552 - i32.const 0 - call $~lib/string/String#indexOf - local.tee $0 - i32.const -1 - i32.xor - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - local.get $0 - call $~lib/string/String#substring - local.tee $6 - i32.store offset=40 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - call $~lib/util/string/strtol - local.set $6 - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/string/String#substr$387 (result i32) + i32.eqz + if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=44 - local.get $0 - i32.const 1 - i32.add - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - i32.const 3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $8 local.get $0 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $8 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $0 - end + i32.store offset=24 + local.get $2 local.get $0 - i32.sub - local.tee $8 - local.get $8 - i32.const 3 - i32.gt_s - select + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner3 + end + local.get $6 + local.get $3 + i32.sub + local.tee $1 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 i32.shl - local.tee $8 - i32.const 0 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3456 - br $__inlined_func$~lib/string/String#substr$387 - end - global.get $~lib/memory/__stack_pointer - local.get $8 + local.tee $1 i32.const 2 call $~lib/rt/itcms/__new - local.tee $10 - i32.store offset=4 - local.get $10 - local.get $2 + local.tee $4 + i32.store offset=32 + local.get $4 local.get $0 + local.get $3 i32.const 1 i32.shl i32.add - local.get $8 + local.get $1 memory.copy global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3456 + call $~lib/array/Array<~lib/string/String>#push end - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + br $folding-inner4 + end + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/rt/__newArray + local.set $2 + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if local.get $0 - i32.store + global.set $~lib/rt/itcms/iter + local.get $1 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 1872 - i32.store - block $__inlined_func$~lib/string/String#padEnd$388 - i32.const 1868 - i32.load - i32.const -2 + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 i32.and - local.tee $8 - i32.eqz - local.get $10 - i32.const 6 - i32.gt_u + local.get $1 i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#padEnd$388 - end - global.get $~lib/memory/__stack_pointer - i32.const 6 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 i32.store offset=4 - local.get $2 + i32.const 0 + global.set $~lib/rt/itcms/visitCount local.get $0 - local.get $10 - memory.copy - i32.const 6 - local.get $10 - i32.sub - local.tee $0 - local.get $8 - i32.gt_u - if - local.get $0 - local.get $0 - i32.const 2 - i32.sub - local.get $8 - i32.div_u - local.get $8 - i32.mul - local.tee $0 - i32.sub - local.set $11 - local.get $2 - local.get $10 - i32.add - local.set $12 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.gt_u - if - local.get $4 - local.get $12 - i32.add - i32.const 1872 - local.get $8 - memory.copy - local.get $4 - local.get $8 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $10 - i32.add + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 41236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 - i32.add - i32.const 1872 - local.get $11 - memory.copy - else local.get $2 - local.get $10 - i32.add - i32.const 1872 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 local.get $0 - memory.copy + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1264 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 41236 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 41236 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + local.set $2 local.get $0 - i32.store + i32.const 15 + i32.and + i32.const 1 local.get $0 - call $~lib/util/string/strtol - local.set $4 - else - global.get $~lib/memory/__stack_pointer + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1536 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer local.get $2 + i32.load + i32.const 1 + i32.or i32.store local.get $2 - call $~lib/util/string/strtol - local.set $6 + call $~lib/rt/tlsf/insertBlock end end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8468 + i32.lt_s + if + i32.const 41264 + i32.const 41312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$73 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1872 + local.set $2 + br $__inlined_func$~lib/util/number/itoa32$73 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + select + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1616 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get local.tee $1 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/string/strtol i32.const 1 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.shl + local.get $3 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i32.const 10000 + i32.ge_u + if + local.get $0 + i32.const 10000 + i32.rem_u + local.set $4 + local.get $0 + i32.const 10000 + i32.div_u + local.set $0 + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.tee $8 - i32.const 2 - i32.ge_s - if (result i32) - global.get $~lib/memory/__stack_pointer + i32.const 100 + i32.ge_u + if + local.get $5 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add local.get $0 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer + i32.const 100 + i32.div_u + local.set $0 + end + local.get $0 + i32.const 10 + i32.ge_u + if + local.get $5 local.get $1 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 2 + i32.shl + i32.const 1884 + i32.add + i32.load i32.store - local.get $1 - call $~lib/util/string/strtol - local.set $1 - local.get $8 - i32.const 3 - i32.ge_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 - i32.store offset=68 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/util/string/strtol - else - i32.const 1 - end else + local.get $5 + local.get $1 + i32.const 1 + i32.sub i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 48 + i32.add + i32.store16 end - local.set $0 - local.get $1 - local.get $0 local.get $3 - local.get $7 - local.get $6 - local.get $4 - call $~lib/date/epochMillis - local.get $5 - i64.extend_i32_s - i64.sub - call $~lib/date/Date#constructor + if + local.get $2 + i32.const 45 + i32.store16 + end global.get $~lib/memory/__stack_pointer - i32.const 72 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - return end - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 ) (func $start:std/date (local $0 i32) @@ -10577,60 +10634,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__newArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8468 - i32.lt_s - if - i32.const 41264 - i32.const 41312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - i32.const 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/std/hash.release.wat b/tests/compiler/std/hash.release.wat index 1620d1e03e..0b046b6c23 100644 --- a/tests/compiler/std/hash.release.wat +++ b/tests/compiler/std/hash.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32))) + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34172)) (memory $0 1) @@ -27,30 +27,6 @@ (data $9.1 (i32.const 1368) "\02\00\00\00\12\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i") (export "memory" (memory $0)) (start $~start) - (func $~start - i32.const 0 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1088 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1120 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1152 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1184 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1216 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1248 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1280 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1328 - call $~lib/util/hash/HASH<~lib/string/String|null> - i32.const 1376 - call $~lib/util/hash/HASH<~lib/string/String|null> - ) (func $~lib/util/hash/HASH<~lib/string/String|null> (param $0 i32) (local $1 i32) (local $2 i32) @@ -249,4 +225,28 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~start + i32.const 0 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1088 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1120 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1152 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1184 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1216 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1248 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1280 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1328 + call $~lib/util/hash/HASH<~lib/string/String|null> + i32.const 1376 + call $~lib/util/hash/HASH<~lib/string/String|null> + ) ) diff --git a/tests/compiler/std/map.release.wat b/tests/compiler/std/map.release.wat index 835670c17a..112ed92024 100644 --- a/tests/compiler/std/map.release.wat +++ b/tests/compiler/std/map.release.wat @@ -5,25 +5,25 @@ (type $3 (func)) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32))) - (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 i64) (result i32))) + (type $6 (func (param i32 i64) (result i32))) + (type $7 (func (param i32 i32 i32) (result i32))) (type $8 (func (param i32 i32 i32 i32))) - (type $9 (func (param i32 i32 i64))) - (type $10 (func (result i32))) - (type $11 (func (param i32 i64 i32) (result i32))) - (type $12 (func (param i32 i64 i32))) - (type $13 (func (param i32 i64 i64))) - (type $14 (func (param i32 i64))) - (type $15 (func (param i32 f32) (result i32))) - (type $16 (func (param i32 f64) (result i32))) + (type $9 (func (result i32))) + (type $10 (func (param i32 f64) (result i32))) + (type $11 (func (param i32 f32) (result i32))) + (type $12 (func (param i32 i64 i32) (result i32))) + (type $13 (func (param i32 i64 i32))) + (type $14 (func (param i32 i32 i64))) + (type $15 (func (param i32 i64))) + (type $16 (func (param i32 i64 i64))) (type $17 (func (param i32 f32 i32) (result i32))) - (type $18 (func (param i32 f32 i32))) - (type $19 (func (param i32 f32 f32))) - (type $20 (func (param i32 f32))) - (type $21 (func (param i32 f64 i32) (result i32))) - (type $22 (func (param i32 f64 i32))) + (type $18 (func (param i32 f64 i32) (result i32))) + (type $19 (func (param i32 f64 i32))) + (type $20 (func (param i32 f32 i32))) + (type $21 (func (param i32 f64))) + (type $22 (func (param i32 f32))) (type $23 (func (param i32 f64 f64))) - (type $24 (func (param i32 f64))) + (type $24 (func (param i32 f32 f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -62,796 +62,1962 @@ (data $14 (i32.const 1760) "!\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\89\10\00B\08\00\00\02\t\00\00P\88\10\00\10\t\12\00\10\89\00\00B\00\00\00P\80\00\00\10\t\11\00\82\08\00\00\90\08\11\00\10\t\01\00\82\00\00\00\90\00\01\00\10\t\02\00\02\01\00\00\10\01\02\00\10\t\14\00\02\n\00\00\10\n\14\00\10\t\04\00\02\02\00\00\10\02\04\00\10\t2\00\02\19\00\00\10\192\00\10\t4\00\02\1a\00\00\10\1a4") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1616 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub local.tee $1 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1422 - local.get $0 + i32.const 20 + i32.sub i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.tee $1 + local.tee $0 + global.get $~lib/rt/itcms/white i32.eqz + i32.eq if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34664 - i32.lt_u + i32.const 3 + i32.eq i32.and - i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1422 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 i32.const 1 - else - local.get $1 - i32.const 1760 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1764 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1504 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz + (func $"~lib/map/Map#get:size" (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - return + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + local.get $4 + local.get $2 + i32.const 12 + i32.le_u if (result i32) - local.get $3 - i32.const 4 - i32.shr_u + i32.const 12 else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 i32.sub - local.set $2 - local.get $3 + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 i32.const 16 - i32.xor + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.tee $3 - i32.const 16 - i32.lt_u + local.get $5 local.get $2 - i32.const 23 - i32.lt_u + i32.load + i32.const -4 i32.and - i32.eqz + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 284 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load + local.get $6 i32.const -4 i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + local.get $5 + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add local.get $2 - i32.const -4 + local.get $5 + local.get $6 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.or i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $5 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $5 + local.get $3 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 + i32.load i32.const -4 i32.and i32.add local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 local.get $2 - i32.const 2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white i32.or - i32.store + i32.store offset=4 + local.get $2 local.get $3 - i32.const -4 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + i32.or + i32.store offset=4 local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 i32.add - i32.ne + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 local.tee $3 - i32.const 7 - i32.sub - local.set $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#constructor" (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 + local.get $0 local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + i32.store offset=8 local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - return + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.tee $3 - i32.const 2 - i32.store + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - local.get $3 - i32.store offset=1568 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34672 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 36240 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34672 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34672 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 f32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $5 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + local.get $2 + i32.shl + local.set $1 + local.get $3 + if + i32.const 1073741820 + local.get $5 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$1377 + local.get $4 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $4 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$1377 + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $4 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $1 + local.get $3 + i32.lt_u + select + memory.copy + end + local.get $2 + local.get $4 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $"~lib/map/Map#values" (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $0 + call $~lib/array/Array#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $3 + local.get $2 + i32.const 12 + i32.mul + i32.add + local.tee $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + local.get $4 + i32.load offset=4 + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $"~lib/map/Map#clear" (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if local.get $0 + i32.load offset=8 + local.tee $2 i32.const 1 - i32.add + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f32.load + f32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34672 - i32.const 36244 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34672 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1113,666 +2279,453 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + local.get $1 + i32.const 255 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 local.get $0 - i32.const 1073741804 - i32.ge_u + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 local.get $0 - i32.const 16 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub + i32.const 0 else - local.get $5 + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s if - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 i32.const 15 - i32.and + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + i32.const 34688 + i32.const 34736 i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - local.get $3 + local.get $0 i32.load offset=4 - i32.const 3 i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - i32.const -4 - i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34664 + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - i32.const 1352 - i32.const 1344 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $"std/map/testNumeric" - call $"std/map/testNumeric" - call $"std/map/testNumeric" - call $"std/map/testNumeric" - call $"std/map/testNumeric" - call $"std/map/testNumeric" - call $"std/map/testNumeric" - call $"std/map/testNumeric" - call $"std/map/testNumeric" - call $"std/map/testNumeric" - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - global.set $~lib/rt/itcms/threshold + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1821,9 +2774,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load16_u local.get $1 - i32.const 255 + i32.const 65535 i32.and i32.eq end @@ -1848,7 +2801,7 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1879,235 +2832,49 @@ i32.const 374761394 i32.add i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $7 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $7 - i32.load8_s - local.tee $8 - i32.store8 - local.get $2 - local.get $7 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $6 - local.get $1 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $7 - i32.const 12 - i32.add - local.set $7 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - i32.store offset=12 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 - i32.store offset=16 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2122,180 +2889,146 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 local.get $1 - i32.extend8_s + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 i32.const 15 i32.shr_u - local.get $3 + local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $0 i32.const 13 i32.shr_u - local.get $3 + local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $0 i32.const 16 i32.shr_u - local.get $3 + local.get $0 i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 local.get $0 - i32.load offset=12 - i32.eq if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 local.get $0 i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s + local.tee $2 + i32.const 1 + i32.and if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2320,10 +3053,9 @@ local.get $0 local.get $1 local.get $1 - i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761397 i32.add i32.const 17 i32.rotl @@ -2348,7 +3080,7 @@ i32.const 16 i32.shr_u i32.xor - call $"~lib/map/Map#find" + call $"~lib/map/Map#find" local.tee $0 i32.eqz if @@ -2366,7 +3098,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#get:size" (param $0 i32) (result i32) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2389,152 +3122,57 @@ local.get $0 i32.store local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $5 local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 local.get $0 - i32.load - local.set $4 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - local.get $2 - i32.shl - local.set $1 - local.get $3 if - i32.const 1073741820 - local.get $5 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select + local.get $0 + i32.load offset=8 local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $1 - end - block $__inlined_func$~lib/rt/itcms/__renew$1377 - local.get $4 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 + i32.const 1 i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u - if - local.get $3 + if (result i32) + i32.const 0 + else local.get $1 - i32.store offset=16 - local.get $4 - local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$1377 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $4 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $1 - local.get $3 - i32.lt_u - select - memory.copy - end - local.get $2 - local.get $4 - i32.ne - if - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $0 - local.get $1 - i32.store offset=8 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2556,52 +3194,57 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - i32.load offset=12 - i32.ge_u + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 i32.load offset=4 - i32.add - local.get $2 - i32.store8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2620,28 +3263,75 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 - i32.store offset=12 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2656,104 +3346,132 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $0 i32.store + local.get $0 + i32.load global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 + local.get $0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f64.load + f64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + ) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 f32) (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 268435455 - i32.gt_u + i32.const 1896 + i32.lt_s if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $0 - local.get $0 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $1 - local.get $2 + i32.const 0 i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.store offset=4 local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - i32.store offset=12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2825,356 +3543,587 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 local.get $1 - i32.const 2 - i32.const 0 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.load offset=8 + local.set $5 local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 i32.const 4 + i32.shl + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end ) - (func $"~lib/map/Map#values" (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=16 - local.tee $0 - call $~lib/array/Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|0 + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add local.get $2 - i32.gt_s + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if - local.get $3 - local.get $2 - i32.const 12 - i32.mul - i32.add - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $1 - local.get $4 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 + local.get $2 + i32.const 2 + i32.or i32.store - local.get $5 - local.get $1 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $"~lib/map/Map#constructor" (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const -4 + i32.and + local.tee $2 i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + i32.lt_u if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 + local.get $4 local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + local.get $2 + i32.add + i32.ne if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 - local.get $1 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add i32.const 2 i32.shl i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if local.get $0 - i32.store + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$1422 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34664 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$1422 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1760 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 1764 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $8 - local.set $3 + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3182,7 +4131,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3191,298 +4140,496 @@ i32.store local.get $0 i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 4 i32.add - i32.load - local.set $3 - block $"__inlined_func$~lib/map/Map#find$1378" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1378" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 - local.get $2 - i32.store8 offset=1 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $9 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 - local.set $5 + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $5 + i32.store offset=4 local.get $0 - i32.load offset=16 - i32.const 3 + i32.load offset=4 + i32.const 1 i32.shl - i32.add - local.set $10 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $5 - local.get $10 - i32.ne - if - local.get $5 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $5 - i32.load8_s - local.tee $11 - i32.store8 - local.get $3 - local.get $5 - i32.load8_s offset=1 - i32.store8 offset=1 - local.get $3 - local.get $6 - local.get $7 - local.get $11 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $11 - local.get $11 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $11 - local.get $11 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $11 - local.get $11 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $11 - i32.load - i32.store offset=4 - local.get $11 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 4 + i32.shl + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3490,77 +4637,313 @@ local.get $0 i32.store offset=4 local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store8 offset=1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load offset=20 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 + local.get $3 local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - i32.load - local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 local.get $0 local.get $3 - i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 i32.const 12 + i32.mul i32.add - global.set $~lib/memory/__stack_pointer - return + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3575,72 +4958,187 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $2 local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - i32.load - local.set $0 - loop $while-continue|0 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#values" (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3658,173 +5156,70 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 i32.load offset=8 - local.set $7 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne + local.tee $0 + call $~lib/array/Array#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s if - local.get $7 - i32.load offset=8 + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $4 + i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $2 - local.get $7 - i32.load - local.tee $8 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store - local.get $2 - local.get $7 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $6 + local.get $5 local.get $1 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 + local.get $4 + i32.load offset=8 + call $~lib/array/Array#__set + local.get $1 + i32.const 1 i32.add - local.set $2 + local.set $1 end - local.get $7 - i32.const 12 + local.get $2 + i32.const 1 i32.add - local.set $7 - br $while-continue|0 + local.set $2 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 + local.get $1 + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3855,9 +5250,21 @@ local.get $0 local.get $1 local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761397 i32.add i32.const 17 i32.rotl @@ -3883,12 +5290,12 @@ local.get $3 i32.xor local.tee $4 - call $"~lib/map/Map#find" + call $"~lib/map/Map#find" local.tee $3 if local.get $3 local.get $2 - i32.store offset=4 + i32.store offset=8 else global.get $~lib/memory/__stack_pointer local.get $0 @@ -3940,7 +5347,7 @@ i32.const 1 i32.or end - call $"~lib/map/Map#rehash" + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer local.get $0 @@ -3965,15 +5372,15 @@ i32.store offset=16 local.get $3 local.get $5 - i32.const 12 - i32.mul + i32.const 4 + i32.shl i32.add local.tee $3 local.get $1 - i32.store + i64.store local.get $3 local.get $2 - i32.store offset=4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3991,12 +5398,12 @@ i32.store local.get $0 i32.load - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $3 - local.get $1 + local.get $2 local.get $4 local.get $0 i32.load offset=4 @@ -4006,7 +5413,7 @@ i32.add local.tee $0 i32.load - i32.store offset=8 + i32.store offset=12 local.get $0 local.get $3 i32.store @@ -4016,8 +5423,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) - (local $2 i32) + (func $"~lib/map/Map#clear" (param $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4039,124 +5446,262 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 local.get $1 + i32.store + local.get $0 local.get $1 - i32.extend8_s + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761395 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 i32.const 15 i32.shr_u - local.get $1 + local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 i32.const 13 i32.shr_u - local.get $1 + local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 i32.const 16 i32.shr_u - local.get $1 + local.get $3 i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 if + local.get $3 + local.get $2 + i32.store offset=4 + else global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $0 i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if + i32.load + local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 + local.get $3 local.get $1 - call $"~lib/map/Map#rehash" + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#clear" (param $0 i32) - (local $1 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4174,979 +5719,1104 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 local.get $1 - i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/map/testNumeric" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + i32.const 15 + i32.shr_u + local.get $4 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + i32.const 13 + i32.shr_u + local.get $4 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + i32.const 16 + i32.shr_u + local.get $4 + i32.xor + local.tee $5 + call $"~lib/map/Map#find" + local.tee $4 + if + local.get $4 + local.get $2 i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=20 + else global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - loop $for-loop|0 + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - if + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 - local.get $0 local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.shl + i32.const 1 + i32.or end + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + local.get $6 + i32.const 4 + i32.shl + i32.add + local.tee $4 local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|1 + f64.store + local.get $4 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $4 + local.get $2 + local.get $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $4 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 local.get $0 - local.get $0 - i32.const 20 - i32.add - call $"~lib/map/Map#set" + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.shl + i32.const 1 + i32.or end + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $6 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 + local.get $0 i32.store - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $6 - local.get $6 - i32.const 8 - i32.le_u - select - local.tee $0 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + f32.store + local.get $3 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $7 - local.get $8 + local.get $0 i32.store - local.get $7 - local.get $8 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $8 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store offset=4 - local.get $7 local.get $0 - i32.store offset=8 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=12 + local.get $0 + i32.store + local.get $0 + i32.load + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + i32.store + local.get $3 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - local.get $8 - i32.load8_s - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|00 - end + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 3 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $0 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.const 31 local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + local.tee $2 i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $3 - i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=4 - i32.add - i32.load8_s - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $5 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34672 + i32.const 0 + i32.store + i32.const 36240 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34672 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $"~lib/map/Map#has" - i32.eqz + i32.const 16 + i32.lt_u if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34672 + i32.add i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 + end + i32.const 34672 + i32.const 36244 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34672 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1616 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 36 + local.get $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 + i32.and i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 + end + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_s + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 + local.get $7 + i32.load8_u + local.tee $8 + i32.store8 + local.get $2 + local.get $7 + i32.load offset=4 i32.store offset=4 + local.get $2 + local.get $6 local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.set $0 - br $for-loop|4 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5161,8 +6831,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -5179,41 +6849,117 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) + (local $6 i64) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -5243,7 +6989,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -5252,8 +6998,8 @@ i32.const 3 i32.div_s local.tee $5 - i32.const 12 - i32.mul + i32.const 4 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $3 i32.store offset=4 @@ -5262,340 +7008,160 @@ i32.store offset=8 local.get $0 i32.load offset=8 - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $7 + local.get $8 local.get $0 i32.load offset=16 - i32.const 12 - i32.mul + i32.const 4 + i32.shl i32.add local.set $4 local.get $3 local.set $2 loop $while-continue|0 local.get $4 - local.get $7 + local.get $8 i32.ne if - local.get $7 - i32.load offset=8 + local.get $8 + i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 - i32.load8_u - local.tee $8 - i32.store8 + local.get $8 + i64.load + local.tee $6 + i64.store local.get $2 - local.get $7 - i32.load offset=4 - i32.store offset=4 + local.get $8 + i32.load offset=8 + i32.store offset=8 local.get $2 - local.get $6 + local.get $7 local.get $1 - local.get $8 + local.get $6 + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $9 i32.const 16 i32.shr_u + local.get $9 i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $8 + local.tee $9 i32.load - i32.store offset=8 - local.get $8 + i32.store offset=12 + local.get $9 local.get $2 i32.store local.get $2 - i32.const 12 + i32.const 16 i32.add local.set $2 end - local.get $7 - i32.const 12 - i32.add - local.set $7 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $"~lib/map/Map#rehash" + local.get $8 + i32.const 16 + i32.add + local.set $8 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $0 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5610,504 +7176,330 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 local.get $1 - i32.const 255 - i32.and + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 16 i32.shr_u + local.get $2 i32.xor - call $"~lib/map/Map#find" - local.tee $0 + call $"~lib/map/Map#find" + local.tee $2 i32.eqz if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 + i32.const 8 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $8 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $3 local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $"__inlined_func$~lib/map/Map#find$1383" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1383" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 + local.get $2 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne if - local.get $3 - local.get $2 - i32.store8 offset=1 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 + local.get $7 + i32.load + local.tee $8 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $2 local.get $7 - i32.const 1 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - local.tee $3 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and i32.const 2 i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $9 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl i32.add - local.set $10 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $5 - local.get $10 - i32.ne - if - local.get $5 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $5 - i32.load8_u - local.tee $11 - i32.store8 - local.get $3 - local.get $5 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - local.get $6 - local.get $7 - local.get $11 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $11 - local.get $11 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $11 - local.get $11 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $11 - local.get $11 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $11 - i32.load - i32.store offset=4 - local.get $11 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $8 + i32.load i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 + local.get $8 + local.get $2 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $2 + i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store8 offset=1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $3 - i32.store + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -6133,11 +7525,9 @@ local.get $0 local.get $1 local.get $1 - i32.const 255 - i32.and i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761397 i32.add i32.const 17 i32.rotl @@ -6162,7 +7552,7 @@ i32.shr_u local.get $1 i32.xor - call $"~lib/map/Map#find" + call $"~lib/map/Map#find" local.tee $1 i32.eqz if @@ -6238,16 +7628,14 @@ i32.store local.get $0 local.get $1 - call $"~lib/map/Map#rehash" + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/map/testNumeric" - (local $0 i32) - (local $1 i32) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6256,911 +7644,1352 @@ (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_u + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 + local.get $7 + i32.load16_u + local.tee $8 + i32.store16 + local.get $2 + local.get $7 + i32.load offset=4 i32.store offset=4 + local.get $2 + local.get $6 local.get $1 - local.get $0 - local.get $0 - i32.const 20 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 i32.add - local.set $0 - br $for-loop|1 + local.set $2 end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=8 - local.set $5 + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $6 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 + else i32.const 0 - i32.store offset=8 + end + if global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 1073741820 - i32.gt_u + i32.ne if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $6 - local.get $6 - i32.const 8 - i32.le_u - select - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $7 - local.get $8 - i32.store - local.get $7 - local.get $8 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $3 - local.get $6 - i32.lt_s + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $5 - local.get $3 - i32.const 12 + local.get $2 + local.get $7 + i32.load8_s + local.tee $8 + i32.store8 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 i32.mul + i32.const 374761394 i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $8 - i32.load offset=8 - i32.const 1 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - local.get $8 - i32.load8_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $3 - br $for-loop|00 + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/array/Array#set:length + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $4 + local.get $0 i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 + local.get $0 i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + local.get $0 + i32.load offset=12 i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + i32.mul i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 + i32.div_s + i32.lt_s + else i32.const 0 - i32.store offset=20 + end + if global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $8 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $3 - i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store + local.get $8 + i64.load + local.tee $6 + i64.store local.get $2 - local.get $7 - i32.load offset=4 - i32.add - i32.load8_u - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + local.get $8 + i32.load offset=8 + i32.store offset=8 local.get $2 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $5 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $7 local.get $1 local.get $6 - i32.const 20 - i32.sub - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=12 + local.get $9 local.get $2 - i32.const 1 + i32.store + local.get $2 + i32.const 16 i32.add local.set $2 - br $for-loop|2 end + local.get $8 + i32.const 16 + i32.add + local.set $8 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $0 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $"~lib/map/Map#find" + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end + end + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 + local.get $0 + i32.store + local.get $0 + local.get $2 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 + local.get $7 + i32.load + local.tee $8 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 i32.store offset=4 + local.get $2 + local.get $6 local.get $1 - local.get $0 - local.get $0 - i32.const 10 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add - local.set $0 - br $for-loop|4 + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7175,67 +9004,179 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $7 + i32.load16_s + local.tee $8 + i32.store16 + local.get $2 + local.get $7 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $7 + i32.const 12 + i32.add + local.set $7 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 local.get $0 - i32.store + local.get $3 + i32.store offset=8 local.get $0 - i32.load + local.get $3 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $2 + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end + local.get $5 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7250,8 +9191,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -7267,41 +9208,118 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 15 i32.shr_u + local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 13 i32.shr_u + local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $1 i32.const 16 i32.shr_u + local.get $1 i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne + call $"~lib/map/Map#find" + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 i64) + (local $5 f64) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -7331,7 +9349,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -7339,9 +9357,9 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 - i32.const 12 - i32.mul + local.tee $7 + i32.const 4 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $3 i32.store offset=4 @@ -7350,89 +9368,103 @@ i32.store offset=8 local.get $0 i32.load offset=8 - local.set $7 + local.set $9 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $7 + local.get $9 local.get $0 i32.load offset=16 - i32.const 12 - i32.mul + i32.const 4 + i32.shl i32.add - local.set $4 + local.set $6 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 - local.get $7 + local.get $6 + local.get $9 i32.ne if - local.get $7 - i32.load offset=8 + local.get $9 + i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 - i32.load16_s - local.tee $8 - i32.store16 + local.get $9 + f64.load + local.tee $5 + f64.store local.get $2 - local.get $7 - i32.load offset=4 - i32.store offset=4 + local.get $9 + i32.load offset=8 + i32.store offset=8 local.get $2 - local.get $6 - local.get $1 local.get $8 + local.get $1 + local.get $5 + i64.reinterpret_f64 + local.tee $4 + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $10 i32.const 15 i32.shr_u + local.get $10 i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $10 i32.const 13 i32.shr_u + local.get $10 i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $10 i32.const 16 i32.shr_u + local.get $10 i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 + local.tee $10 + i32.load + i32.store offset=12 + local.get $10 local.get $2 i32.store local.get $2 - i32.const 12 + i32.const 16 i32.add local.set $2 end - local.get $7 - i32.const 12 + local.get $9 + i32.const 16 i32.add - local.set $7 + local.set $9 br $while-continue|0 end end @@ -7440,13 +9472,13 @@ local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $8 i32.store offset=12 local.get $0 - local.get $6 + local.get $8 i32.store local.get $0 - local.get $6 + local.get $8 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 @@ -7470,7 +9502,7 @@ local.get $0 i32.store offset=8 local.get $0 - local.get $5 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 @@ -7487,12 +9519,12 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 f64) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7510,18 +9542,28 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 local.get $1 - i32.extend16_s + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761395 i32.add i32.const 17 i32.rotl @@ -7546,284 +9588,99 @@ i32.shr_u local.get $3 i32.xor - local.tee $4 - call $"~lib/map/Map#find" + call $"~lib/map/Map#find" local.tee $3 + i32.eqz if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 8 i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + local.get $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.const 4 local.get $0 - i32.load offset=12 + i32.load offset=20 + local.tee $4 + local.get $4 + i32.const 4 + i32.lt_u + select i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + if (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.const 1 - call $~lib/array/ensureCapacity + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $3 - i32.store offset=12 + call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7838,469 +9695,318 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $8 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $"__inlined_func$~lib/map/Map#find$1388" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1388" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne if - local.get $3 - local.get $2 - i32.store16 offset=2 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $7 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $9 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + i32.load + local.set $8 + local.get $2 + local.get $7 + f32.load + f32.store + local.get $2 + local.get $7 + i32.load offset=4 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $5 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl + local.get $2 + local.get $6 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - local.set $10 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $5 - local.get $10 - i32.ne - if - local.get $5 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $5 - i32.load16_s - local.tee $11 - i32.store16 - local.get $3 - local.get $5 - i32.load16_s offset=2 - i32.store16 offset=2 - local.get $3 - local.get $6 - local.get $7 - local.get $11 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $11 - local.get $11 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $11 - local.get $11 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $11 - local.get $11 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $11 - i32.load - i32.store offset=4 - local.get $11 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - br $while-continue|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 + local.get $8 + local.get $2 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $2 + i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer + local.set $2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store16 offset=2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + local.get $7 + i32.const 12 i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $3 - i32.store + local.set $7 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#delete" (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $"~lib/map/Map#find" + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34688 - i32.const 34736 + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) - (local $2 i32) + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $"~lib/map/Map#rehash" + end global.get $~lib/memory/__stack_pointer i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8315,153 +10021,359 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.tee $3 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 local.get $1 - local.get $1 - i32.load offset=8 i32.const 1 - i32.or - i32.store offset=8 + i32.const 0 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $0 - i32.load offset=20 - i32.const 1 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.store offset=20 + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1896 + i32.lt_s + if + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $1 - i32.const 1 - i32.add - i32.const 4 local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select + i32.load offset=12 i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - local.get $1 - call $"~lib/map/Map#rehash" + local.get $3 + i32.store offset=12 end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/map/testNumeric" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34664 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + call $"std/map/testNumeric" + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s @@ -8470,269 +10382,441 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 + i32.const 0 i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store offset=4 - local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + local.set $3 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=16 + i32.const 1896 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - i32.store offset=20 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - loop $for-loop|0 + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1383" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1383" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i32.store8 offset=1 + else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 - i32.lt_s + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $10 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load8_u + local.tee $11 + i32.store8 + local.get $3 + local.get $5 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $6 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $6 + i32.store local.get $0 - call $"~lib/map/Map#get" + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $7 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $4 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#get" + local.get $4 + i32.store offset=8 local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=8 local.get $0 - i32.const 20 - i32.add - call $"~lib/map/Map#set" + local.get $9 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" + i32.store offset=12 local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store8 offset=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub + i32.const 12 + i32.add global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s @@ -8741,20 +10825,13 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $5 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $6 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8762,172 +10839,448 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 i32.const 0 i32.store - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $6 - local.get $6 - i32.const 8 - i32.le_u - select - i32.const 1 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $7 - local.get $8 + local.get $0 i32.store - local.get $7 - local.get $8 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=12 + i32.load global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 i32.const 16 + i32.shr_u + i32.xor + local.tee $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1408" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1408" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if local.get $3 - local.get $6 - i32.lt_s + local.get $2 + i64.store offset=8 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - local.get $5 - local.get $3 - i32.const 12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 i32.mul - i32.add - local.tee $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 local.get $0 - local.get $8 - i32.load16_s - call $~lib/array/Array#__set + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $0 + i32.shl + i32.const 1 + i32.or end - local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 1 i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $11 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $6 + local.get $4 local.set $3 - br $for-loop|00 + loop $while-continue|00 + local.get $6 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $11 + i64.load + local.tee $9 + i64.store + local.get $3 + local.get $11 + i64.load offset=8 + i64.store offset=8 + local.get $3 + local.get $10 + local.get $5 + local.get $9 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $9 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $12 + local.get $12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $12 + local.get $12 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $12 + local.get $12 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $12 + i32.load + i32.store offset=16 + local.get $12 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $11 + i32.const 24 + i32.add + local.set $11 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $0 + local.get $10 + i32.store + local.get $0 + local.get $10 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 12 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -8935,410 +11288,343 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 + local.get $0 i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $3 - i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store - local.get $7 - i32.load offset=4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $6 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 - local.get $5 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $6 - i32.const 20 + i32.const 16 i32.sub - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" + i32.const 1896 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" - local.get $2 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 1 i32.add - local.set $2 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s - if + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $4 + local.set $3 + loop $while-continue|0 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $10 + i32.load + local.tee $11 + i32.store + local.get $3 + local.get $10 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $9 + local.get $8 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=8 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 + end end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $9 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#delete" + local.get $9 + i32.store + local.get $0 + local.get $9 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $4 + i32.store offset=12 local.get $0 + local.get $4 + i32.store offset=8 local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#delete" + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=12 local.get $0 - i32.const 1 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $0 - br $for-loop|4 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $7 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer return @@ -9350,528 +11636,449 @@ call $~lib/builtins/abort unreachable ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $2 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $7 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $8 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1393" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1393" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 if - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + local.get $3 + local.get $2 + i32.store16 offset=2 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - local.get $2 - local.get $7 - i32.load16_u - local.tee $8 - i32.store16 - local.get $2 - local.get $7 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $2 - local.get $6 - local.get $1 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 i32.mul - local.tee $8 - local.get $8 + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer i32.const 16 - i32.shr_u - i32.xor - i32.and + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.add + local.tee $3 i32.const 2 i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl i32.add - local.tee $8 - i32.load + local.set $10 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load16_u + local.tee $11 + i32.store16 + local.get $3 + local.get $5 + i32.load16_u offset=2 + i32.store16 offset=2 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=8 - local.get $8 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 i32.store - local.get $2 - i32.const 12 + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer end - local.get $7 - i32.const 12 - i32.add - local.set $7 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - local.set $3 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - local.get $3 local.get $0 - i32.load offset=12 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 12 i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9900,11 +12107,10 @@ local.get $0 i32.store local.get $1 - i32.const 65535 - i32.and + i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -9959,7 +12165,7 @@ i32.add i32.load local.set $3 - block $"__inlined_func$~lib/map/Map#find$1393" + block $"__inlined_func$~lib/map/Map#find$1378" loop $while-continue|0 local.get $3 if @@ -9972,9 +12178,9 @@ i32.const 0 else local.get $3 - i32.load16_u + i32.load8_u local.get $1 - i32.const 65535 + i32.const 255 i32.and i32.eq end @@ -9983,7 +12189,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1393" + br $"__inlined_func$~lib/map/Map#find$1378" end local.get $4 i32.const -2 @@ -10003,7 +12209,7 @@ if local.get $3 local.get $2 - i32.store16 offset=2 + i32.store8 offset=1 else global.get $~lib/memory/__stack_pointer local.get $0 @@ -10120,20 +12326,20 @@ if local.get $3 local.get $5 - i32.load16_u + i32.load8_s local.tee $11 - i32.store16 + i32.store8 local.get $3 local.get $5 - i32.load16_u offset=2 - i32.store16 offset=2 + i32.load8_s offset=1 + i32.store8 offset=1 local.get $3 local.get $6 local.get $7 local.get $11 i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -10259,210 +12465,73 @@ i32.add local.tee $3 local.get $1 - i32.store16 + i32.store8 local.get $3 local.get $2 - i32.store16 offset=2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 + i32.store8 offset=1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz - if + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer return end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + i32.const 34688 + i32.const 34736 i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable ) - (func $"std/map/testNumeric" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -10471,12 +12540,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10484,296 +12557,444 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 15 - call $~lib/rt/itcms/__new - local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 + local.get $0 i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=16 + local.get $0 + i32.load global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $1 - i32.store - loop $for-loop|0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1403" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1403" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i64.store offset=8 + else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 - i32.lt_u + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=4 local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#get" + i32.store offset=8 local.get $0 - i32.const 10 + i32.load offset=8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $11 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $6 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $6 + local.get $11 + i32.ne + if + local.get $11 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $11 + i64.load + local.tee $9 + i64.store + local.get $3 + local.get $11 + i64.load offset=8 + i64.store offset=8 + local.get $3 + local.get $10 + local.get $5 + local.get $9 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $9 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $12 + local.get $12 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $12 + local.get $12 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $12 + local.get $12 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $12 + i32.load + i32.store offset=16 + local.get $12 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $11 + i32.const 24 + i32.add + local.set $11 + br $while-continue|00 + end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $0 + local.get $10 + i32.store local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_u - if + local.get $10 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $4 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#get" + local.get $4 + i32.store offset=8 local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=8 local.get $0 - i32.const 20 - i32.add - call $"~lib/map/Map#set" + local.get $7 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" + i32.store offset=12 local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=16 - local.set $6 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub + i32.const 12 + i32.add global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s @@ -10782,163 +13003,459 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.store offset=12 - local.get $6 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $6 - local.get $6 - i32.const 8 - i32.le_u - select - i32.const 1 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new + local.get $0 + i32.store + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor local.tee $8 - i32.store offset=8 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $7 - local.get $8 - i32.store - local.get $7 - local.get $8 - call $~lib/rt/itcms/__link + i32.const 1896 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $8 - i32.store offset=4 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=12 + i32.store + local.get $0 + i32.load global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1388" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1388" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $3 + end + local.get $3 + if local.get $3 - local.get $6 - i32.lt_s + local.get $2 + i32.store16 offset=2 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - local.get $5 - local.get $3 - i32.const 12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 i32.mul - i32.add - local.tee $8 - i32.load offset=8 + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - local.get $8 - i32.load16_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl i32.add + local.set $10 + local.get $4 local.set $3 - br $for-loop|00 + loop $while-continue|00 + local.get $5 + local.get $10 + i32.ne + if + local.get $5 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $5 + i32.load16_s + local.tee $11 + i32.store16 + local.get $3 + local.get $5 + i32.load16_s offset=2 + i32.store16 offset=2 + local.get $3 + local.get $6 + local.get $7 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=4 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $0 + local.get $6 + i32.store + local.get $0 + local.get $6 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store16 offset=2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $8 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/array/Array#set:length + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#keys" (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10949,701 +13466,951 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 17 + i32.const 16 + i32.const 31 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $4 - local.get $5 + local.get $6 + i32.const 0 i32.store - local.get $4 - local.get $5 + local.get $6 + i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - local.get $4 - i32.const 3 + local.get $6 + i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.get $6 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 local.get $5 - i32.store offset=8 - local.get $4 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 local.get $5 - i32.store offset=8 - local.get $4 local.get $5 - call $~lib/rt/itcms/__link + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - local.get $4 - i32.const 4 + global.get $~lib/memory/__stack_pointer + local.get $7 i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $6 i32.store offset=4 - local.get $4 - i32.const 0 - i32.store offset=20 + local.get $6 + local.get $0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $3 - i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length + local.get $6 + i32.store offset=4 + loop $for-loop|0 local.get $2 - i32.gt_s + local.get $5 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - i32.load offset=4 + local.get $3 local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $5 - global.get $~lib/memory/__stack_pointer i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $5 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $"~lib/map/Map#has" + local.tee $7 + i32.load offset=12 + i32.const 1 + i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|2 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $6 + i32.store + local.get $6 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i64.reinterpret_f64 + local.tee $5 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 local.get $3 - i32.store offset=4 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 local.get $3 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $10 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $"__inlined_func$~lib/map/Map#find$1418" + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + f64.load + f64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $"__inlined_func$~lib/map/Map#find$1418" + end + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 end - i32.const 0 - local.set $0 - loop $for-loop|3 + local.get $3 + if + local.get $3 + local.get $2 + f64.store offset=8 + else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 50 - i32.lt_u + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" + i32.load offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $9 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#delete" + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 + local.get $12 local.get $0 - i32.const 1 + i32.load offset=16 + i32.const 24 + i32.mul i32.add - local.set $0 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u - if + local.set $8 + local.get $4 + local.set $3 + loop $while-continue|00 + local.get $8 + local.get $12 + i32.ne + if + local.get $12 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $12 + f64.load + local.tee $7 + f64.store + local.get $3 + local.get $12 + f64.load offset=8 + f64.store offset=8 + local.get $3 + local.get $11 + local.get $6 + local.get $7 + i64.reinterpret_f64 + local.tee $5 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $13 + local.get $13 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $13 + local.get $13 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $13 + local.get $13 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $13 + i32.load + i32.store offset=16 + local.get $13 + local.get $3 + i32.store + local.get $3 + i32.const 24 + i32.add + local.set $3 + end + local.get $12 + i32.const 24 + i32.add + local.set $12 + br $while-continue|00 + end + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $11 + i32.store offset=12 local.get $0 + local.get $11 + i32.store local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + local.get $11 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $4 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#delete" + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable + local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + f64.store + local.get $3 + local.get $2 + f64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $10 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) + (func $"~lib/map/Map#keys" (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz - if + block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub global.set $~lib/memory/__stack_pointer - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 12 + i32.mul + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $4 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store - local.get $0 + local.get $6 local.get $1 - call $"~lib/map/Map#rehash" + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"std/map/testNumeric" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 f32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -11652,507 +14419,482 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $1 + local.get $0 i32.store - loop $for-loop|0 + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + local.get $3 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + local.get $3 + i32.const 16 + i32.shr_u + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + f32.store offset=4 + else + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 - i32.lt_s + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=4 local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#get" + i32.store offset=8 local.get $0 - i32.const 10 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $4 + local.set $3 + loop $while-continue|0 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $10 + i32.load + local.set $11 + local.get $3 + local.get $10 + f32.load + f32.store + local.get $3 + local.get $10 + f32.load offset=4 + f32.store offset=4 + local.get $3 + local.get $9 + local.get $8 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + i32.const 15 + i32.shr_u + local.get $11 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + i32.const 13 + i32.shr_u + local.get $11 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + i32.const 16 + i32.shr_u + local.get $11 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=8 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 + end end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_s - if + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.get $9 + i32.store offset=12 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $9 + i32.store + local.get $0 + local.get $9 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $8 i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#get" + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 + i32.store offset=8 local.get $0 - i32.const 20 - i32.add - call $"~lib/map/Map#set" + local.get $6 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#get" + i32.store offset=12 local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.const 1 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + f32.store + local.get $3 + local.get $2 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $7 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 0 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $5 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 24 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=16 - local.tee $6 - call $~lib/array/Array#constructor - local.tee $2 i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $0 - local.get $7 - i32.load - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - local.get $0 - call $~lib/array/Array#set:length + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $1 - call $"~lib/map/Map#values" - local.tee $0 - i32.store offset=12 + i32.const 3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $4 - i32.store offset=16 + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - call $"~lib/map/Map#constructor" - local.tee $5 - i32.store offset=20 - i32.const 0 - local.set $3 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $~lib/array/Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $6 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $7 - i32.const 20 - i32.sub - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $6 - local.get $6 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $6 - local.get $6 - call $"~lib/map/Map#set" - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.const 4 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.store offset=4 - local.get $5 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end i32.const 0 - local.set $0 - loop $for-loop|4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 local.get $0 - i32.const 50 - i32.lt_s + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $0 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 - i32.const 50 + i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable @@ -12165,18 +14907,18 @@ local.get $0 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $0 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 i32.const 1568 - i32.const 52 + i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable @@ -12186,17 +14928,15 @@ i32.store offset=4 local.get $1 local.get $0 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + call $"~lib/map/Map#get" local.get $0 - call $"~lib/map/Map#has" + i32.const 10 + i32.add + i32.ne if i32.const 0 i32.const 1568 - i32.const 54 + i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable @@ -12205,7 +14945,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer @@ -12213,999 +14953,730 @@ i32.store offset=4 local.get $1 call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $7 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 + i32.const 100 i32.ne if - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u if - local.get $2 - local.get $7 - i32.load - local.tee $8 - i32.store - local.get $2 - local.get $7 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $2 - local.get $6 local.get $1 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761397 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 i32.add - local.set $2 - end - local.get $7 - i32.const 12 - i32.add - local.set $7 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $0 - local.get $6 - i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - else + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store - local.get $0 + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.load offset=16 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $7 i32.store - local.get $0 - i32.load offset=12 - i32.eq + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 1073741820 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s + local.get $6 i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 i32.const 1 - i32.shl + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 i32.const 1 - i32.or + i32.add + local.set $3 + br $for-loop|00 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 + i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store - local.get $3 - local.get $2 + local.get $4 i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 + local.get $4 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 + local.get $5 + i32.store offset=8 local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load + local.get $5 i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner0 + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - i32.store offset=8 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 + i32.const 12 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $7 - call $"~lib/map/Map#find" + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 + i32.store offset=20 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=4 - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $8 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.get $7 i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.add + i32.load8_u + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 - local.set $10 + local.get $2 + call $~lib/array/Array#__get + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $10 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $4 - local.set $3 - loop $while-continue|0 - local.get $5 - local.get $10 - i32.ne - if - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $10 - i32.load - local.tee $11 - i32.store - local.get $3 - local.get $10 - i32.load offset=4 - i32.store offset=4 - local.get $3 - local.get $9 - local.get $8 - local.get $11 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $11 - local.get $11 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $11 - local.get $11 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $11 - local.get $11 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $11 - i32.load - i32.store offset=8 - local.get $11 - local.get $3 - i32.store - local.get $3 - i32.const 12 - i32.add - local.set $3 - end - local.get $10 - i32.const 12 - i32.add - local.set $10 - br $while-continue|0 - end + local.get $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $9 - i32.store + call $"~lib/map/Map#get" local.get $0 - local.get $9 - call $~lib/rt/itcms/__link + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $8 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $4 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $6 - i32.store offset=12 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=12 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - i32.store - local.get $3 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $1 - local.get $7 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -13217,152 +15688,17 @@ call $~lib/builtins/abort unreachable ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $"~lib/map/Map#find" - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -13393,7 +15729,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 18 + i32.const 24 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -13421,7 +15757,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - i32.const 48 + i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 global.get $~lib/memory/__stack_pointer @@ -13458,16 +15794,16 @@ local.get $1 i32.store loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_u + local.get $2 + i64.const 100 + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -13480,17 +15816,18 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - local.get $0 + local.get $2 + local.get $2 + i32.wrap_i64 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -13504,9 +15841,10 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 i32.const 10 i32.add i32.ne @@ -13518,10 +15856,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.add - local.set $0 + local.get $2 + i64.const 1 + i64.add + local.set $2 br $for-loop|0 end end @@ -13540,19 +15878,19 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 + i64.const 0 + local.set $2 loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_u + local.get $2 + i64.const 100 + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -13566,9 +15904,10 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 i32.const 10 i32.add i32.ne @@ -13584,17 +15923,18 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - local.get $0 + local.get $2 + local.get $2 + i32.wrap_i64 i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -13608,9 +15948,10 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 i32.const 20 i32.add i32.ne @@ -13622,10 +15963,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.add - local.set $0 + local.get $2 + i64.const 1 + i64.add + local.set $2 br $for-loop|1 end end @@ -13664,13 +16005,13 @@ i32.store local.get $1 i32.load offset=8 - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=16 - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16 @@ -13688,39 +16029,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 19 + i32.const 25 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 + local.get $8 i32.const 0 i32.store - local.get $7 + local.get $8 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 + local.get $8 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 + local.get $8 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 + local.get $8 i32.const 0 i32.store offset=12 - local.get $6 - i32.const 268435455 + local.get $7 + i32.const 134217727 i32.gt_u if i32.const 1456 @@ -13732,80 +16073,78 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $6 - local.get $6 + local.get $7 + local.get $7 i32.const 8 i32.le_u select - i32.const 2 + i32.const 3 i32.shl - local.tee $0 + local.tee $9 i32.const 1 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $4 i32.store offset=12 - local.get $7 local.get $8 + local.get $4 i32.store - local.get $7 local.get $8 + local.get $4 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 local.get $8 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - local.get $7 - local.get $0 + local.get $8 + local.get $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 + local.get $8 local.get $7 - local.get $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=4 - i32.const 0 - local.set $0 loop $for-loop|00 local.get $3 - local.get $6 + local.get $7 i32.lt_s if - local.get $5 + local.get $6 local.get $3 - i32.const 12 - i32.mul + i32.const 4 + i32.shl i32.add - local.tee $8 - i32.load offset=8 + local.tee $4 + i32.load offset=12 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store - local.get $7 - local.get $0 local.get $8 - i32.load - call $~lib/array/Array#__set + local.get $0 + local.get $4 + i64.load + call $~lib/array/Array#__set local.get $0 i32.const 1 i32.add @@ -13819,23 +16158,23 @@ end end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store - local.get $7 + local.get $8 local.get $0 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 - call $"~lib/map/Map#values" + call $"~lib/map/Map#values" local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -13855,7 +16194,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 20 + i32.const 26 call $~lib/rt/itcms/__new local.tee $4 i32.store @@ -13883,7 +16222,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=4 - i32.const 48 + i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 global.get $~lib/memory/__stack_pointer @@ -13921,253 +16260,81 @@ i32.store offset=16 global.get $~lib/memory/__stack_pointer call $"~lib/map/Map#constructor" - local.tee $3 + local.tee $5 i32.store offset=20 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $2 - local.get $7 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $5 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $6 - i32.const 20 - i32.sub - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $5 - local.get $5 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - local.tee $5 - local.get $5 - call $"~lib/map/Map#set" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $3 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - local.get $0 - i32.const 20 - i32.add - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $3 + local.get $8 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1568 + i32.const 1248 + i32.const 1728 + i32.const 114 i32.const 42 - i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" + local.get $8 + i32.store + local.get $8 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u - if + local.get $3 + call $~lib/array/Array#__get + local.set $6 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $2 + call $"~lib/map/Map#has" + i32.eqz if i32.const 0 i32.const 1568 - i32.const 50 + i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable @@ -14176,946 +16343,766 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" + local.get $6 + i32.const 20 + i32.sub + i64.extend_i32_s + call $"~lib/map/Map#has" i32.eqz if i32.const 0 i32.const 1568 - i32.const 52 + i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#delete" + local.get $4 + local.get $2 + local.get $2 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $5 + local.get $6 + i32.const 20 + i32.sub + local.tee $6 + local.get $6 + call $"~lib/map/Map#set" + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|4 + local.set $3 + br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=4 - local.get $1 + local.get $4 call $"~lib/map/Map#get:size" - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 1568 - i32.const 56 + i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 - local.get $1 + local.get $5 call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if i32.const 0 i32.const 1568 - i32.const 60 + i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_u if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|3 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i64) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $8 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 i32.ne if - local.get $8 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 + local.get $2 + i64.const 50 + i64.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - local.get $8 - i64.load - local.tee $6 - i64.store + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - local.get $8 - i32.load offset=8 - i32.store offset=8 local.get $2 - local.get $7 - local.get $1 - local.get $6 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $6 - i64.const 32 - i64.shr_u i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - i32.and - i32.const 2 - i32.shl + i32.const 10 i32.add - local.tee $9 - i32.load - i32.store offset=12 - local.get $9 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - i32.store + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - i32.const 16 - i32.add + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add local.set $2 + br $for-loop|4 end - local.get $8 - i32.const 16 - i32.add - local.set $8 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $0 - local.get $7 - i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store offset=8 - else global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 24 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - local.get $0 - i32.load offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 local.get $0 - i32.load offset=12 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 local.get $0 - i32.load offset=4 - else + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl i32.const 1 - i32.or + i32.add + local.set $0 + br $for-loop|1 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 4 - i32.shl - i32.add - local.tee $3 local.get $1 - i64.store - local.get $3 - local.get $2 - i32.store offset=8 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=12 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 268435455 + i32.gt_u if - i32.const 1248 + i32.const 1456 i32.const 1728 - i32.const 130 - i32.const 22 + i32.const 70 + i32.const 60 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 i32.const 1 - call $~lib/array/ensureCapacity + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $0 - local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.const 0 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#values" (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=16 - local.tee $0 - call $~lib/array/Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - local.tee $4 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz + local.get $6 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store local.get $5 - local.get $1 - local.get $4 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 i32.load offset=8 - call $~lib/array/Array#__set - local.get $1 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 + br $for-loop|00 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - local.get $1 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s @@ -15127,170 +17114,89 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - i32.store + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul + i32.const 12 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $"__inlined_func$~lib/map/Map#find$1403" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $3 - i64.load - i64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1403" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end + i32.store offset=20 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length local.get $2 - i64.store offset=8 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=4 - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15298,258 +17204,320 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.get $7 i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.get $2 + i32.const 2 i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 - i32.store offset=4 + i32.add + i32.load + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $11 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $11 + i32.store offset=4 local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add + local.get $2 + call $~lib/array/Array#__get local.set $6 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $6 - local.get $11 - i32.ne - if - local.get $11 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $11 - i64.load - local.tee $9 - i64.store - local.get $3 - local.get $11 - i64.load offset=8 - i64.store offset=8 - local.get $3 - local.get $10 - local.get $5 - local.get $9 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $9 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $12 - local.get $12 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $12 - local.get $12 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $12 - local.get $12 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $12 - i32.load - i32.store offset=16 - local.get $12 - local.get $3 - i32.store - local.get $3 - i32.const 24 - i32.add - local.set $3 - end - local.get $11 - i32.const 24 - i32.add - local.set $11 - br $while-continue|00 - end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $10 - i32.store + call $"~lib/map/Map#get" local.get $0 - local.get $10 - call $~lib/rt/itcms/__link + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $4 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $7 - i32.store offset=12 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=12 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 24 - i32.mul - i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=16 - local.get $0 - local.get $3 - i32.store end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -15561,245 +17529,16 @@ call $~lib/builtins/abort unreachable ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $"~lib/map/Map#find" - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#clear" (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) (local $1 i32) - (local $2 i64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -15830,7 +17569,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 21 + i32.const 15 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -15858,7 +17597,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - i32.const 64 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 global.get $~lib/memory/__stack_pointer @@ -15895,16 +17634,16 @@ local.get $1 i32.store loop $for-loop|0 - local.get $2 - i64.const 100 - i64.lt_s + local.get $0 + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -15917,18 +17656,17 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - local.get $2 - i32.wrap_i64 + local.get $0 + local.get $0 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -15942,10 +17680,9 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 10 i32.add i32.ne @@ -15957,10 +17694,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|0 end end @@ -15979,19 +17716,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $2 - i64.const 100 - i64.lt_s + local.get $0 + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16005,10 +17742,9 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 10 i32.add i32.ne @@ -16024,18 +17760,17 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - local.get $2 - i32.wrap_i64 + local.get $0 + local.get $0 i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16049,10 +17784,9 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 20 i32.add i32.ne @@ -16064,10 +17798,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|1 end end @@ -16106,13 +17840,13 @@ i32.store local.get $1 i32.load offset=8 - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=16 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16 @@ -16130,39 +17864,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 22 + i32.const 16 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 i32.const 0 i32.store - local.get $8 + local.get $7 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 i32.const 0 i32.store offset=12 - local.get $7 - i32.const 134217727 + local.get $6 + i32.const 536870910 i32.gt_u if i32.const 1456 @@ -16174,78 +17908,80 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $7 - local.get $7 + local.get $6 + local.get $6 i32.const 8 i32.le_u select - i32.const 3 + i32.const 1 i32.shl - local.tee $9 + local.tee $0 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $8 i32.store offset=12 + local.get $7 local.get $8 - local.get $4 i32.store + local.get $7 local.get $8 - local.get $4 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 + local.get $7 local.get $8 - local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 - local.get $9 + local.get $7 + local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 local.get $7 + local.get $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 + i32.const 0 + local.set $0 loop $for-loop|00 local.get $3 - local.get $7 + local.get $6 i32.lt_s if - local.get $6 + local.get $5 local.get $3 - i32.const 4 - i32.shl + i32.const 12 + i32.mul i32.add - local.tee $4 - i32.load offset=12 + local.tee $8 + i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 local.get $0 - local.get $4 - i64.load - call $~lib/array/Array#__set + local.get $8 + i32.load16_u + call $~lib/array/Array#__set local.get $0 i32.const 1 i32.add @@ -16259,23 +17995,23 @@ end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 local.get $0 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $1 - call $"~lib/map/Map#values" + call $"~lib/map/Map#values" local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -16295,7 +18031,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 23 + i32.const 17 call $~lib/rt/itcms/__new local.tee $4 i32.store @@ -16323,7 +18059,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=4 - i32.const 96 + i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 global.get $~lib/memory/__stack_pointer @@ -16361,21 +18097,19 @@ i32.store offset=16 global.get $~lib/memory/__stack_pointer call $"~lib/map/Map#constructor" - local.tee $5 + local.tee $3 i32.store offset=20 - i32.const 0 - local.set $3 loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 - local.get $8 + local.get $7 call $~lib/array/Array#get:length - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -16389,10 +18123,10 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $3 - local.get $8 + local.get $2 + local.get $7 i32.load offset=12 i32.ge_u if @@ -16404,16 +18138,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 i32.load offset=4 - local.get $3 - i32.const 3 + local.get $2 + i32.const 1 i32.shl i32.add - i64.load - local.set $2 + i32.load16_u + local.set $5 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -16422,15 +18156,15 @@ local.get $0 i32.store offset=4 local.get $0 - local.get $3 + local.get $2 call $~lib/array/Array#__get local.set $6 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $5 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16447,8 +18181,7 @@ local.get $6 i32.const 20 i32.sub - i64.extend_i32_s - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16462,23 +18195,23 @@ local.get $4 i32.store offset=4 local.get $4 - local.get $2 - local.get $2 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer local.get $5 - i32.store offset=4 local.get $5 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $6 i32.const 20 i32.sub - local.tee $6 - local.get $6 + local.tee $5 + local.get $5 call $"~lib/map/Map#set" - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|2 end end @@ -16498,9 +18231,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store offset=4 - local.get $5 + local.get $3 call $"~lib/map/Map#get:size" i32.const 100 i32.ne @@ -16512,19 +18245,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i64.const 50 - i64.lt_s + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16538,10 +18271,9 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 20 i32.add i32.ne @@ -16557,14 +18289,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#delete" + local.get $0 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -16573,10 +18305,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|3 end end @@ -16595,19 +18327,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 + i32.const 0 + local.set $0 loop $for-loop|4 - local.get $2 - i64.const 50 - i64.lt_s + local.get $0 + i32.const 50 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -16620,18 +18352,17 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - local.get $2 - i32.wrap_i64 + local.get $0 + local.get $0 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -16645,14 +18376,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#delete" + local.get $0 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -16661,10 +18392,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|4 end end @@ -16675,699 +18406,533 @@ call $"~lib/map/Map#get:size" i32.const 50 i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - if - i32.const 0 - i32.const 1568 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i64) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) + (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $8 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + i32.store offset=8 + local.get $1 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 i32.ne if - local.get $8 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s if - local.get $2 - local.get $8 - i64.load - local.tee $6 - i64.store - local.get $2 - local.get $8 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $7 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $6 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - i32.and - i32.const 2 - i32.shl + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 i32.add - local.tee $9 - i32.load - i32.store offset=12 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.add - local.set $2 + local.set $0 + br $for-loop|1 end - local.get $8 - i32.const 16 - i32.add - local.set $8 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $0 - local.get $7 - i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 + call $~lib/rt/itcms/__new + local.tee $8 i32.store offset=8 - else global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 + local.get $7 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s + local.get $6 i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 i32.const 1 - i32.shl + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 i32.const 1 - i32.or + i32.add + local.set $3 + br $for-loop|00 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $7 local.get $0 - i32.store + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 4 - i32.shl + i32.const 8 i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 + global.set $~lib/memory/__stack_pointer + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add + local.get $1 + call $"~lib/map/Map#values" local.tee $0 - i32.load i32.store offset=12 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i64) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i64) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s @@ -17379,170 +18944,89 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 + local.get $4 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul + local.get $4 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $"__inlined_func$~lib/map/Map#find$1408" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $3 - i64.load - i64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1408" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end + i32.store offset=20 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length local.get $2 - i64.store offset=8 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=4 - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17550,419 +19034,330 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=4 + i32.add + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $5 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 local.get $5 + call $"~lib/map/Map#set" + local.get $2 i32.const 1 i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 - i32.store + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.get $1 local.get $0 - i32.load offset=8 - local.set $11 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 - local.get $11 + call $"~lib/map/Map#get" local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul + i32.const 20 i32.add - local.set $6 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $6 - local.get $11 - i32.ne - if - local.get $11 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $11 - i64.load - local.tee $9 - i64.store - local.get $3 - local.get $11 - i64.load offset=8 - i64.store offset=8 - local.get $3 - local.get $10 - local.get $5 - local.get $9 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $9 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $12 - local.get $12 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $12 - local.get $12 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $12 - local.get $12 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $12 - i32.load - i32.store offset=16 - local.get $12 - local.get $3 - i32.store - local.get $3 - i32.const 24 - i32.add - local.set $3 - end - local.get $11 - i32.const 24 - i32.add - local.set $11 - br $while-continue|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $10 - i32.store + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $10 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $4 - i32.store offset=8 local.get $0 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 10 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=12 - local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 24 - i32.mul - i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=16 - local.get $0 - local.get $3 - i32.store end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $"~lib/map/Map#find" - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $"~lib/map/Map#rehash" + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) (local $1 i32) (local $2 i64) @@ -18003,7 +19398,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 24 + i32.const 21 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -18070,14 +19465,14 @@ loop $for-loop|0 local.get $2 i64.const 100 - i64.lt_u + i64.lt_s if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -18095,13 +19490,13 @@ i32.wrap_i64 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18116,7 +19511,7 @@ i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $2 i32.wrap_i64 i32.const 10 @@ -18157,14 +19552,14 @@ loop $for-loop|1 local.get $2 i64.const 100 - i64.lt_u + i64.lt_s if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18179,7 +19574,7 @@ i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $2 i32.wrap_i64 i32.const 10 @@ -18202,13 +19597,13 @@ i32.wrap_i64 i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18223,7 +19618,7 @@ i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $2 i32.wrap_i64 i32.const 20 @@ -18303,7 +19698,7 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 25 + i32.const 22 call $~lib/rt/itcms/__new local.tee $8 i32.store @@ -18468,7 +19863,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 26 + i32.const 23 call $~lib/rt/itcms/__new local.tee $4 i32.store @@ -18603,7 +19998,7 @@ i32.store offset=4 local.get $1 local.get $2 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18621,7 +20016,7 @@ i32.const 20 i32.sub i64.extend_i32_s - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -18637,7 +20032,7 @@ local.get $4 local.get $2 local.get $2 - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 @@ -18649,986 +20044,497 @@ local.get $6 call $"~lib/map/Map#set" local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $2 - loop $for-loop|3 - local.get $2 - i64.const 50 - i64.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#get" - local.get $2 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64.const 1 - i64.add - local.set $2 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $2 - loop $for-loop|4 - local.get $2 - i64.const 50 - i64.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - local.get $2 - i32.wrap_i64 - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#delete" - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $2 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64.const 1 - i64.add - local.set $2 - br $for-loop|4 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=4 - local.get $1 + local.get $4 call $"~lib/map/Map#get:size" - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 1568 - i32.const 56 + i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 - local.get $1 + local.get $5 call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if i32.const 0 i32.const 1568 - i32.const 60 + i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f32.load - f32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 f32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $8 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - local.get $8 - f32.load - local.tee $4 - f32.store + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - local.get $8 - i32.load offset=4 + call $"~lib/map/Map#get" + local.get $2 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 local.get $2 - local.get $7 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - local.get $4 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - local.get $9 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - local.get $9 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - local.get $9 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=8 - local.get $9 local.get $2 - i32.store + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $2 - i32.const 12 - i32.add + i64.const 1 + i64.add local.set $2 + br $for-loop|3 end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $0 - local.get $7 - i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $4 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 + local.get $2 + i64.const 50 + i64.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=4 - else + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.get $1 + local.get $2 + local.get $2 + i32.wrap_i64 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|4 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $3 local.get $1 - f32.store - local.get $3 - local.get $2 i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 + local.get $1 + call $"~lib/map/Map#clear" global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $2 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 f32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"~lib/map/Map#keys" (param $0 i32) (result i32) + (func $"std/map/testNumeric" + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 28 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 i32.const 0 - call $~lib/rt/itcms/__link + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 + call $"~lib/map/Map#constructor" + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.store offset=8 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 268435455 - i32.gt_u + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 + i32.const 1896 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=16 + local.tee $6 + call $~lib/array/Array#constructor + local.tee $2 i32.store offset=4 - loop $for-loop|0 - local.get $2 - local.get $5 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 i32.lt_s if + local.get $5 local.get $3 - local.get $2 i32.const 12 i32.mul i32.add @@ -19639,470 +20545,353 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $7 - f32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $2 i32.store + local.get $2 local.get $0 - local.get $6 - i32.load offset=12 - i32.ge_u - if - local.get $0 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $0 - i32.const 1 - i32.add - local.tee $7 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $7 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 + local.get $7 + i32.load + call $~lib/array/Array#__set local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $1 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 f32) (param $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $8 - call $"~lib/map/Map#find" - local.tee $3 - if - local.get $3 - local.get $2 - f32.store offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $"~lib/map/Map#values" + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $"~lib/map/Map#constructor" + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + local.set $6 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load offset=20 + local.get $3 + call $~lib/array/Array#__get + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.get $1 + local.get $6 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $1 + i32.store offset=4 + local.get $1 + local.get $7 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 - i32.store + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.get $4 i32.store offset=4 + local.get $4 + local.get $6 + local.get $6 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $11 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $11 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul + local.get $5 + i32.store offset=4 + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $6 + local.get $6 + call $"~lib/map/Map#set" + local.get $3 + i32.const 1 i32.add - local.set $6 - local.get $4 local.set $3 - loop $while-continue|0 - local.get $6 - local.get $11 - i32.ne - if - local.get $11 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $11 - f32.load - local.tee $5 - f32.store - local.get $3 - local.get $11 - f32.load offset=4 - f32.store offset=4 - local.get $3 - local.get $10 - local.get $9 - local.get $5 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $12 - local.get $12 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $12 - local.get $12 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $12 - local.get $12 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $3 - i32.store - local.get $3 - i32.const 12 - i32.add - local.set $3 - end - local.get $11 - i32.const 12 - i32.add - local.set $11 - br $while-continue|0 - end - end + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $10 - i32.store + call $"~lib/map/Map#get" local.get $0 - local.get $10 - call $~lib/rt/itcms/__link + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $4 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $4 - call $~lib/rt/itcms/__link + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - local.get $7 - i32.store offset=12 + local.get $0 + i32.const 10 + i32.add + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=8 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - i32.store offset=12 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $3 - local.get $1 - f32.store - local.get $3 - local.get $2 - f32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $8 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -20114,162 +20903,25 @@ call $~lib/builtins/abort unreachable ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $"~lib/map/Map#find" - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $"~lib/map/Map#rehash" - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) - (local $1 f32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 24 @@ -20282,7 +20934,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -20291,81 +20943,81 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 27 + i32.const 12 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=8 - local.get $0 - local.get $4 + local.get $1 + local.get $5 i32.store - local.get $0 - local.get $4 + local.get $1 + local.get $5 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=8 - local.get $0 - local.get $4 + local.get $1 + local.get $5 i32.store offset=8 - local.get $0 - local.get $4 + local.get $1 + local.get $5 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 4 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt + local.get $0 + i32.const 100 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -20375,21 +21027,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + local.get $0 i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -20400,13 +21051,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#get" + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 10 i32.add i32.ne @@ -20418,17 +21068,17 @@ call $~lib/builtins/abort unreachable end - local.get $1 - f32.const 1 - f32.add - local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 call $"~lib/map/Map#get:size" i32.const 100 i32.ne @@ -20440,19 +21090,19 @@ call $~lib/builtins/abort unreachable end - f32.const 0 - local.set $1 + i32.const 0 + local.set $0 loop $for-loop|1 - local.get $1 - f32.const 100 - f32.lt + local.get $0 + i32.const 100 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -20463,13 +21113,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#get" + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 10 i32.add i32.ne @@ -20482,21 +21131,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + local.get $0 i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $0 + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -20507,13 +21155,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#get" + i32.store offset=4 local.get $1 - i32.trunc_sat_f32_s + local.get $0 + call $"~lib/map/Map#get" + local.get $0 i32.const 20 i32.add i32.ne @@ -20525,43 +21172,221 @@ call $~lib/builtins/abort unreachable end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 1 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.get $8 + i32.load16_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 end end global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 - i32.store offset=4 - local.get $0 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - local.get $0 - call $"~lib/map/Map#keys" - local.tee $4 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 call $"~lib/map/Map#values" - local.tee $3 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20571,7 +21396,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -20580,1184 +21405,761 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 29 + i32.const 14 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $7 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $5 i32.store offset=8 - local.get $6 - local.get $7 + local.get $4 + local.get $5 i32.store - local.get $6 - local.get $7 + local.get $4 + local.get $5 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - local.get $6 + local.get $4 i32.const 3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - i32.const 48 + i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $7 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $5 i32.store offset=8 - local.get $6 - local.get $7 + local.get $4 + local.get $5 i32.store offset=8 - local.get $6 - local.get $7 + local.get $4 + local.get $5 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - local.get $6 + local.get $4 i32.const 4 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - local.get $6 + local.get $4 i32.const 0 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - local.get $6 + local.get $4 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=16 global.get $~lib/memory/__stack_pointer call $"~lib/map/Map#constructor" - local.tee $5 + local.tee $3 i32.store offset=20 loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $2 - local.get $4 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1728 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $2 - call $~lib/array/Array#__get - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $7 - i32.const 20 - i32.sub - f32.convert_i32_s - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $1 - local.get $1 - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $7 - local.get $7 - call $"~lib/map/Map#set" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $"~lib/map/Map#get:size" - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f32.const 50 - f32.lt + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#has" - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#get" - local.get $1 - i32.trunc_sat_f32_s - i32.const 20 - i32.add - i32.ne + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $2 + local.get $7 + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 1568 + i32.const 1248 + i32.const 1728 + i32.const 114 i32.const 42 - i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#delete" + local.get $7 + i32.store + local.get $7 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - local.get $1 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $"~lib/map/Map#get:size" - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f32.const 50 - f32.lt - if + local.get $2 + call $~lib/array/Array#__get + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $5 + call $"~lib/map/Map#has" + i32.eqz if i32.const 0 i32.const 1568 - i32.const 50 + i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 local.get $1 - i32.trunc_sat_f32_s - i32.const 10 - i32.add - call $"~lib/map/Map#set" - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 - local.get $0 local.get $1 - call $"~lib/map/Map#has" + local.get $6 + i32.const 20 + i32.sub + call $"~lib/map/Map#has" i32.eqz if i32.const 0 i32.const 1568 - i32.const 52 + i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#delete" + local.get $4 + local.get $5 + local.get $5 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - local.get $0 - local.get $1 - call $"~lib/map/Map#has" - if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $5 + local.get $5 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store offset=4 - local.get $0 + local.get $4 call $"~lib/map/Map#get:size" - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 1568 - i32.const 56 + i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $"~lib/map/Map#clear" - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - local.get $0 + local.get $3 call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if i32.const 0 i32.const 1568 - i32.const 60 + i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if + end + i32.const 0 + local.set $0 + loop $for-loop|3 local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $0 - f64.load - f64.eq - end - if + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.get $0 + i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 - return + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#rehash" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $9 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $6 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $6 - local.get $9 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 i32.ne if - local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s if - local.get $2 - local.get $9 - f64.load - local.tee $5 - f64.store - local.get $2 - local.get $9 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $8 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $5 - i64.reinterpret_f64 - local.tee $4 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $10 - i32.const 15 - i32.shr_u - local.get $10 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $10 - i32.const 13 - i32.shr_u - local.get $10 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $10 - i32.const 16 - i32.shr_u - local.get $10 - i32.xor - i32.and - i32.const 2 - i32.shl + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $0 + i32.const 10 i32.add - local.tee $10 - i32.load - i32.store offset=12 - local.get $10 - local.get $2 - i32.store - local.get $2 - i32.const 16 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.add - local.set $2 + local.set $0 + br $for-loop|4 end - local.get $9 - i32.const 16 - i32.add - local.set $9 - br $while-continue|0 end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#clear" + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=12 - local.get $0 - local.get $8 - i32.store - local.get $0 - local.get $8 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 i32) - (local $3 i64) + (func $"std/map/testNumeric" + (local $0 i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - local.tee $5 - call $"~lib/map/Map#find" - local.tee $4 - if - local.get $4 - local.get $2 + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1896 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store offset=8 - else global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 30 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 local.get $0 + local.get $4 i32.store local.get $0 - i32.load offset=16 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 i32.store + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.eq + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $4 - local.get $0 - i32.load offset=12 + i32.const 0 + i32.const 1568 + i32.const 11 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load offset=4 - else + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 20 + i32.add + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|1 end - call $"~lib/map/Map#rehash" end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $6 - i32.const 4 - i32.shl - i32.add - local.tee $4 - local.get $1 - f64.store - local.get $4 - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $4 - local.get $2 - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=12 - local.get $0 - local.get $4 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#keys" (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - local.set $3 + call $"~lib/map/Map#keys" + local.tee $4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=16 - local.set $5 + call $"~lib/map/Map#values" + local.tee $3 + i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 31 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 134217727 - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select - i32.const 3 - i32.shl - local.tee $0 - i32.const 1 + i32.const 24 + i32.const 32 call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 + local.tee $6 + i32.store global.get $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $7 global.get $~lib/memory/__stack_pointer local.get $7 - i32.store offset=12 + i32.store offset=8 local.get $6 local.get $7 i32.store @@ -21768,762 +22170,403 @@ local.get $6 i32.store offset=4 local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 + i32.const 3 i32.store offset=4 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - local.tee $7 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $7 - f64.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.load offset=12 - i32.ge_u - if - local.get $0 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1728 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $0 - i32.const 1 - i32.add - local.tee $7 - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $7 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $1 - call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $6 - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 f64) (param $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.store offset=4 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $7 i32.store offset=8 + local.get $6 + local.get $7 + i32.store offset=8 + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - br_if $folding-inner1 + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.store + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i64.reinterpret_f64 + call $"~lib/map/Map#constructor" local.tee $5 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $10 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $"__inlined_func$~lib/map/Map#find$1418" - loop $while-continue|0 - local.get $3 - if - local.get $3 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $3 - f64.load - f64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $"__inlined_func$~lib/map/Map#find$1418" - end - local.get $4 - i32.const -2 - i32.and - local.set $3 - br $while-continue|0 - end - end + i32.store offset=20 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $3 - end - local.get $3 - if - local.get $3 + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array#get:length local.get $2 - f64.store offset=8 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store offset=4 - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1896 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $4 + i32.store + local.get $2 + local.get $4 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $7 + i32.const 20 + i32.sub + f64.convert_i32_s + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $6 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $11 - i32.store + i32.store offset=4 + local.get $6 + local.get $1 + local.get $1 + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $9 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $4 + local.get $5 i32.store offset=4 + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $7 + local.get $7 + call $"~lib/map/Map#set" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $"~lib/map/Map#get:size" + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 - local.set $12 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $12 + i32.store offset=4 local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul + local.get $1 + call $"~lib/map/Map#get" + local.get $1 + i32.trunc_sat_f64_s + i32.const 20 i32.add - local.set $8 - local.get $4 - local.set $3 - loop $while-continue|00 - local.get $8 - local.get $12 - i32.ne - if - local.get $12 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $12 - f64.load - local.tee $7 - f64.store - local.get $3 - local.get $12 - f64.load offset=8 - f64.store offset=8 - local.get $3 - local.get $11 - local.get $6 - local.get $7 - i64.reinterpret_f64 - local.tee $5 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $13 - local.get $13 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $13 - local.get $13 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $13 - local.get $13 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $13 - i32.load - i32.store offset=16 - local.get $13 - local.get $3 - i32.store - local.get $3 - i32.const 24 - i32.add - local.set $3 - end - local.get $12 - i32.const 24 - i32.add - local.set $12 - br $while-continue|00 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store offset=12 local.get $0 - local.get $11 - i32.store + i32.store offset=4 local.get $0 - local.get $11 - call $~lib/rt/itcms/__link + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $9 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $1 + local.get $1 + i32.trunc_sat_f64_s + i32.const 10 i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - local.get $4 - i32.const 24 - i32.mul - i32.add - local.tee $3 - local.get $1 - f64.store - local.get $3 - local.get $2 - f64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $10 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=16 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#delete" (param $0 i32) (param $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - call $"~lib/map/Map#find" - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $4 - local.get $4 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#delete" + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $"~lib/map/Map#has" + if + i32.const 0 + i32.const 1568 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|4 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=20 + call $"~lib/map/Map#get:size" + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if + call $"~lib/map/Map#clear" global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - local.get $3 - call $"~lib/map/Map#rehash" + call $"~lib/map/Map#get:size" + if + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34688 + i32.const 34736 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $"std/map/testNumeric" + (func $"std/map/testNumeric" (local $0 i32) - (local $1 f64) + (local $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22560,7 +22603,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 30 + i32.const 27 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -22588,7 +22631,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 64 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $4 global.get $~lib/memory/__stack_pointer @@ -22626,15 +22669,15 @@ i32.store loop $for-loop|0 local.get $1 - f64.const 100 - f64.lt + f32.const 100 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -22649,16 +22692,16 @@ local.get $0 local.get $1 local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -22673,9 +22716,9 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 10 i32.add i32.ne @@ -22688,8 +22731,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|0 end @@ -22709,19 +22752,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|1 local.get $1 - f64.const 100 - f64.lt + f32.const 100 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -22736,9 +22779,9 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 10 i32.add i32.ne @@ -22756,16 +22799,16 @@ local.get $0 local.get $1 local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 20 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -22780,9 +22823,9 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 20 i32.add i32.ne @@ -22795,8 +22838,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|1 end @@ -22821,7 +22864,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#keys" + call $"~lib/map/Map#keys" local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -22829,7 +22872,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $"~lib/map/Map#values" + call $"~lib/map/Map#values" local.tee $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -22849,7 +22892,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 32 + i32.const 29 call $~lib/rt/itcms/__new local.tee $6 i32.store @@ -22877,7 +22920,7 @@ global.get $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 - i32.const 96 + i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor local.set $7 global.get $~lib/memory/__stack_pointer @@ -22961,10 +23004,10 @@ local.get $4 i32.load offset=4 local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load + f32.load local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22982,7 +23025,7 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -22999,8 +23042,8 @@ local.get $7 i32.const 20 i32.sub - f64.convert_i32_s - call $"~lib/map/Map#has" + f32.convert_i32_s + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -23016,7 +23059,7 @@ local.get $6 local.get $1 local.get $1 - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 @@ -23064,19 +23107,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|3 local.get $1 - f64.const 50 - f64.lt + f32.const 50 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -23091,9 +23134,9 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#get" + call $"~lib/map/Map#get" local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 20 i32.add i32.ne @@ -23110,13 +23153,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#delete" + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -23126,8 +23169,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|3 end @@ -23147,19 +23190,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|4 local.get $1 - f64.const 50 - f64.lt + f32.const 50 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -23174,16 +23217,16 @@ local.get $0 local.get $1 local.get $1 - i32.trunc_sat_f64_s + i32.trunc_sat_f32_s i32.const 10 i32.add - call $"~lib/map/Map#set" + call $"~lib/map/Map#set" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" i32.eqz if i32.const 0 @@ -23198,13 +23241,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#delete" + call $"~lib/map/Map#delete" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $"~lib/map/Map#has" + call $"~lib/map/Map#has" if i32.const 0 i32.const 1568 @@ -23214,8 +23257,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|4 end @@ -23239,7 +23282,7 @@ local.get $0 i32.store offset=4 local.get $0 - call $"~lib/map/Map#clear" + call $"~lib/map/Map#clear" global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 @@ -23266,46 +23309,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1896 - i32.lt_s - if - i32.const 34688 - i32.const 34736 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1504 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/std/math.release.wat b/tests/compiler/std/math.release.wat index 8dc86c5333..244d0cc93e 100644 --- a/tests/compiler/std/math.release.wat +++ b/tests/compiler/std/math.release.wat @@ -6,19 +6,18 @@ (type $4 (func (param f64 f64) (result f64))) (type $5 (func (param f32 f32) (result f32))) (type $6 (func (param f64 f64 f64 f64) (result i32))) - (type $7 (func (result f64))) - (type $8 (func (param f64 f64) (result i32))) - (type $9 (func (param f32 f32) (result i32))) + (type $7 (func (param f64 f64) (result i32))) + (type $8 (func (param f32 f32) (result i32))) + (type $9 (func (result f64))) (type $10 (func)) - (type $11 (func (param f64 i32) (result f64))) - (type $12 (func (param i32 i32 i32 i32))) - (type $13 (func (param i64) (result i32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param f64 i32) (result f64))) + (type $13 (func (param i64 i64) (result i64))) (type $14 (func (param f32 f32 f32 f32) (result i32))) - (type $15 (func (param i64))) - (type $16 (func (param f64 f64 i32) (result f64))) - (type $17 (func (param f64))) - (type $18 (func (param i64 i64 i64 i64 i64))) - (type $19 (func (param i64 i64) (result i64))) + (type $15 (func (param f64))) + (type $16 (func (param i64) (result i32))) + (type $17 (func (param i64))) + (type $18 (func (param f64 f64 i32) (result f64))) (import "env" "Math.E" (global $~lib/bindings/dom/Math.E f64)) (import "env" "Math.LN2" (global $~lib/bindings/dom/Math.LN2 f64)) (import "env" "Math.LN10" (global $~lib/bindings/dom/Math.LN10 f64)) @@ -27,38 +26,38 @@ (import "env" "Math.SQRT1_2" (global $~lib/bindings/dom/Math.SQRT1_2 f64)) (import "env" "Math.SQRT2" (global $~lib/bindings/dom/Math.SQRT2 f64)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) - (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) - (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) - (import "env" "Math.asin" (func $~lib/bindings/dom/Math.asin (param f64) (result f64))) - (import "env" "Math.asinh" (func $~lib/bindings/dom/Math.asinh (param f64) (result f64))) - (import "env" "Math.atan" (func $~lib/bindings/dom/Math.atan (param f64) (result f64))) - (import "env" "Math.atanh" (func $~lib/bindings/dom/Math.atanh (param f64) (result f64))) - (import "env" "Math.atan2" (func $~lib/bindings/dom/Math.atan2 (param f64 f64) (result f64))) - (import "env" "Math.cbrt" (func $~lib/bindings/dom/Math.cbrt (param f64) (result f64))) - (import "env" "Math.ceil" (func $~lib/bindings/dom/Math.ceil (param f64) (result f64))) (import "env" "Math.cos" (func $~lib/bindings/dom/Math.cos (param f64) (result f64))) - (import "env" "Math.cosh" (func $~lib/bindings/dom/Math.cosh (param f64) (result f64))) + (import "env" "Math.sqrt" (func $~lib/bindings/dom/Math.sqrt (param f64) (result f64))) + (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) + (import "env" "Math.ceil" (func $~lib/bindings/dom/Math.ceil (param f64) (result f64))) + (import "env" "Math.sin" (func $~lib/bindings/dom/Math.sin (param f64) (result f64))) (import "env" "Math.exp" (func $~lib/bindings/dom/Math.exp (param f64) (result f64))) - (import "env" "Math.expm1" (func $~lib/bindings/dom/Math.expm1 (param f64) (result f64))) - (import "env" "Math.pow" (func $~lib/bindings/dom/Math.pow (param f64 f64) (result f64))) + (import "env" "Math.trunc" (func $~lib/bindings/dom/Math.trunc (param f64) (result f64))) (import "env" "Math.floor" (func $~lib/bindings/dom/Math.floor (param f64) (result f64))) - (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) - (import "env" "Math.log10" (func $~lib/bindings/dom/Math.log10 (param f64) (result f64))) - (import "env" "Math.log1p" (func $~lib/bindings/dom/Math.log1p (param f64) (result f64))) + (import "env" "Math.asin" (func $~lib/bindings/dom/Math.asin (param f64) (result f64))) + (import "env" "Math.acos" (func $~lib/bindings/dom/Math.acos (param f64) (result f64))) + (import "env" "Math.expm1" (func $~lib/bindings/dom/Math.expm1 (param f64) (result f64))) (import "env" "Math.log2" (func $~lib/bindings/dom/Math.log2 (param f64) (result f64))) - (import "env" "Math.max" (func $~lib/bindings/dom/Math.max (param f64 f64) (result f64))) - (import "env" "Math.min" (func $~lib/bindings/dom/Math.min (param f64 f64) (result f64))) - (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) - (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) + (import "env" "Math.log1p" (func $~lib/bindings/dom/Math.log1p (param f64) (result f64))) + (import "env" "Math.log" (func $~lib/bindings/dom/Math.log (param f64) (result f64))) + (import "env" "Math.atan" (func $~lib/bindings/dom/Math.atan (param f64) (result f64))) + (import "env" "Math.abs" (func $~lib/bindings/dom/Math.abs (param f64) (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (import "env" "Math.sign" (func $~lib/bindings/dom/Math.sign (param f64) (result f64))) - (import "env" "Math.sin" (func $~lib/bindings/dom/Math.sin (param f64) (result f64))) - (import "env" "Math.sinh" (func $~lib/bindings/dom/Math.sinh (param f64) (result f64))) - (import "env" "Math.sqrt" (func $~lib/bindings/dom/Math.sqrt (param f64) (result f64))) - (import "env" "Math.tan" (func $~lib/bindings/dom/Math.tan (param f64) (result f64))) + (import "env" "Math.random" (func $~lib/bindings/dom/Math.random (result f64))) + (import "env" "Math.pow" (func $~lib/bindings/dom/Math.pow (param f64 f64) (result f64))) (import "env" "Math.tanh" (func $~lib/bindings/dom/Math.tanh (param f64) (result f64))) - (import "env" "Math.trunc" (func $~lib/bindings/dom/Math.trunc (param f64) (result f64))) + (import "env" "Math.sinh" (func $~lib/bindings/dom/Math.sinh (param f64) (result f64))) + (import "env" "Math.sign" (func $~lib/bindings/dom/Math.sign (param f64) (result f64))) + (import "env" "Math.min" (func $~lib/bindings/dom/Math.min (param f64 f64) (result f64))) + (import "env" "Math.max" (func $~lib/bindings/dom/Math.max (param f64 f64) (result f64))) + (import "env" "Math.log10" (func $~lib/bindings/dom/Math.log10 (param f64) (result f64))) + (import "env" "Math.cosh" (func $~lib/bindings/dom/Math.cosh (param f64) (result f64))) + (import "env" "Math.cbrt" (func $~lib/bindings/dom/Math.cbrt (param f64) (result f64))) + (import "env" "Math.atanh" (func $~lib/bindings/dom/Math.atanh (param f64) (result f64))) + (import "env" "Math.atan2" (func $~lib/bindings/dom/Math.atan2 (param f64 f64) (result f64))) + (import "env" "Math.asinh" (func $~lib/bindings/dom/Math.asinh (param f64) (result f64))) + (import "env" "Math.acosh" (func $~lib/bindings/dom/Math.acosh (param f64) (result f64))) + (import "math" "mod" (func $std/math/mod (param f64 f64) (result f64))) (global $~lib/math/rempio2_y0 (mut f64) (f64.const 0)) (global $~lib/math/rempio2_y1 (mut f64) (f64.const 0)) (global $~lib/math/res128_hi (mut i64) (i64.const 0)) @@ -69,8 +68,6 @@ (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) - (global $~lib/math/NativeMath.sincos_sin (mut f64) (f64.const 0)) - (global $~lib/math/NativeMath.sincos_cos (mut f64) (f64.const 0)) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") @@ -215,83 +212,6 @@ (data $11.128 (i32.const 14353) "`Y\df\bd\d5\d5?\dce\a4\08*\0b\n\bd") (export "memory" (memory $0)) (start $~start) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - i32.const 1023 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - local.get $1 - i32.const 1023 - i32.ge_s - select - local.set $1 - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - i32.const -1022 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - local.get $1 - i32.const -1022 - i32.le_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 - end - end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul - ) (func $std/math/check (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 i32) local.get $0 @@ -555,4730 +475,6124 @@ end i32.const 1 ) - (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) - (local $1 i32) + (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1072693248 - i32.ge_u + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + local.get $1 + f32.abs + f32.const 2 + f32.le if - local.get $3 - i32.wrap_i64 local.get $1 - i32.const 1072693248 + f32.const 2 + f32.eq + if + local.get $0 + local.get $0 + f32.mul + return + end + local.get $1 + f32.const 0.5 + f32.eq + if + local.get $0 + f32.sqrt + f32.abs + f32.const inf + local.get $0 + f32.const -inf + f32.ne + select + return + end + local.get $1 + f32.const -1 + f32.eq + if + f32.const 1 + local.get $0 + f32.div + return + end + local.get $1 + f32.const 1 + f32.eq + if + local.get $0 + return + end + local.get $1 + f32.const 0 + f32.eq + if + f32.const 1 + return + end + end + block $~lib/util/math/powf_lut|inlined.0 (result f32) + local.get $1 + i32.reinterpret_f32 + local.tee $8 + i32.const 1 + i32.shl + local.tee $6 + i32.const 1 + i32.sub + i32.const -16777217 + i32.ge_u + local.tee $7 + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 8388608 i32.sub + i32.const 2130706432 + i32.ge_u i32.or - i32.eqz if + local.get $7 + if + f32.const 1 + local.get $6 + i32.eqz + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const nan:0x400000 + local.get $2 + i32.const 1065353216 + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + local.get $0 + local.get $1 + f32.add + local.get $6 + i32.const -16777216 + i32.gt_u + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + i32.const -16777216 + i32.gt_u + i32.or + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const nan:0x400000 + local.get $2 + i32.const 2130706432 + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const 0 + local.get $8 + i32.const 31 + i32.shr_u + i32.eqz + local.get $2 + i32.const 2130706432 + i32.lt_u + i32.eq + br_if $~lib/util/math/powf_lut|inlined.0 + drop + local.get $1 + local.get $1 + f32.mul + br $~lib/util/math/powf_lut|inlined.0 + end + local.get $2 + i32.const 1 + i32.shl + i32.const 1 + i32.sub + i32.const -16777217 + i32.ge_u + if + f32.const 1 + local.get $0 + local.get $0 + f32.mul + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 31 + i32.shr_u + if (result i32) + block $~lib/util/math/checkintf|inlined.0 (result i32) + i32.const 0 + local.get $8 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $2 + i32.const 127 + i32.lt_u + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 2 + local.get $2 + i32.const 150 + i32.gt_u + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 0 + local.get $8 + i32.const 1 + i32.const 150 + local.get $2 + i32.sub + i32.shl + local.tee $2 + i32.const 1 + i32.sub + i32.and + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 1 + local.get $2 + local.get $8 + i32.and + br_if $~lib/util/math/checkintf|inlined.0 + drop + i32.const 2 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + select + local.tee $0 + f32.div + local.get $0 + local.get $8 + i32.const 0 + i32.lt_s + select + br $~lib/util/math/powf_lut|inlined.0 + end local.get $2 i32.const 0 i32.lt_s if - f64.const 3.141592653589793 - return + block $~lib/util/math/checkintf|inlined.1 (result i32) + i32.const 0 + local.get $8 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $4 + i32.const 127 + i32.lt_u + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 2 + local.get $4 + i32.const 150 + i32.gt_u + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 0 + local.get $8 + i32.const 1 + i32.const 150 + local.get $4 + i32.sub + i32.shl + local.tee $4 + i32.const 1 + i32.sub + i32.and + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 1 + local.get $4 + local.get $8 + i32.and + br_if $~lib/util/math/checkintf|inlined.1 + drop + i32.const 2 + end + local.tee $4 + i32.eqz + if + local.get $0 + local.get $0 + f32.sub + local.tee $0 + local.get $0 + f32.div + br $~lib/util/math/powf_lut|inlined.0 + end + i32.const 65536 + i32.const 0 + local.get $4 + i32.const 1 + i32.eq + select + local.set $4 + local.get $2 + i32.const 2147483647 + i32.and + local.set $2 + end + local.get $2 + i32.const 8388608 + i32.lt_u + if + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + i32.const 192937984 + i32.sub + local.set $2 end - f64.const 0 - return - end - f64.const 0 - local.get $0 - local.get $0 - f64.sub - f64.div - return - end - local.get $1 - i32.const 1071644672 - i32.lt_u - if - local.get $1 - i32.const 1012924416 - i32.le_u - if - f64.const 1.5707963267948966 - return end - f64.const 1.5707963267948966 - local.get $0 - f64.const 6.123233995736766e-17 - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 3.479331075960212e-05 + local.get $2 + local.get $2 + i32.const 1060306944 + i32.sub + local.tee $2 + i32.const -8388608 + i32.and + local.tee $6 + i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $2 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 10016 + i32.add + local.tee $2 + f64.load f64.mul - f64.const 7.915349942898145e-04 + f64.const -1 f64.add + local.tee $3 + local.get $3 f64.mul - f64.const -0.04005553450067941 - f64.add + local.set $9 + local.get $1 + f64.promote_f32 + local.get $3 + f64.const 0.288457581109214 f64.mul - f64.const 0.20121253213486293 + f64.const -0.36092606229713164 f64.add + local.get $9 + local.get $9 f64.mul - f64.const -0.3255658186224009 - f64.add f64.mul - f64.const 0.16666666666666666 + local.get $3 + f64.const 1.4426950408774342 + f64.mul + local.get $2 + f64.load offset=8 + local.get $6 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.add f64.add + local.get $3 + f64.const 0.480898481472577 f64.mul - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.const -0.6882839716054533 + f64.const -0.7213474675006291 f64.add + local.get $9 f64.mul - f64.const 2.0209457602335057 + f64.add f64.add f64.mul - f64.const -2.403394911734414 + local.tee $3 + i64.reinterpret_f64 + i64.const 47 + i64.shr_u + i64.const 65535 + i64.and + i64.const 32959 + i64.ge_u + if + f32.const -inf + f32.const inf + local.get $4 + select + local.get $3 + f64.const 127.99999995700433 + f64.gt + br_if $~lib/util/math/powf_lut|inlined.0 + drop + f32.const -0 + f32.const 0 + local.get $4 + select + local.get $3 + f64.const -150 + f64.le + br_if $~lib/util/math/powf_lut|inlined.0 + drop + end + local.get $3 + f64.const 211106232532992 + f64.add + local.tee $9 + i64.reinterpret_f64 + local.set $5 + local.get $3 + local.get $9 + f64.const -211106232532992 f64.add + f64.sub + local.tee $3 + f64.const 0.6931471806916203 f64.mul f64.const 1 f64.add - f64.div + local.get $3 + f64.const 0.05550361559341535 + f64.mul + f64.const 0.2402284522445722 + f64.add + local.get $3 + local.get $3 + f64.mul + f64.mul + f64.add + local.get $5 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $5 + local.get $4 + i64.extend_i32_u + i64.add + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 + f64.mul + f32.demote_f64 + end + ) + (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $6 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1072243195 + i32.le_u + if + local.get $3 + i32.const 1044816030 + i32.lt_u + if + f64.const 1 + return + end + local.get $0 + local.get $0 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + f64.const 1 + local.get $1 + f64.const 0.5 f64.mul + local.tee $7 + f64.sub + local.tee $8 + f64.const 1 + local.get $8 f64.sub + local.get $7 f64.sub + local.get $1 + local.get $1 + local.get $1 + local.get $1 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul + local.get $2 + local.get $2 + f64.mul + local.get $1 + local.get $1 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul + local.get $0 + f64.const 0 + f64.mul f64.sub + f64.add + f64.add return end - local.get $2 - i32.const 0 - i32.lt_s + local.get $3 + i32.const 2146435072 + i32.ge_u if - f64.const 1.5707963267948966 local.get $0 - f64.const 0.5 + local.get $0 + f64.sub + return + end + block $~lib/math/rempio2|inlined.0 (result i32) + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1073928572 + i32.lt_u + if + i32.const 1 + local.set $3 + local.get $6 + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $3 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const -1.5707963267341256 + f64.add + local.set $0 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const -6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const -6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const -6.077100506303966e-11 + f64.add + local.tee $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add + end + end + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + local.get $3 + br $~lib/math/rempio2|inlined.0 + end + local.get $4 + i32.const 1094263291 + i32.lt_u + if + local.get $4 + i32.const 20 + i32.shr_u + local.tee $3 + local.get $0 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $7 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 + local.get $7 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 16 + i32.gt_u + if + local.get $7 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $3 + local.get $0 + local.get $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $7 + f64.const 8.4784276603689e-32 + f64.mul + local.get $0 + local.get $0 + local.get $7 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $0 + local.get $2 + f64.sub + local.set $1 + end + end + local.get $1 + global.set $~lib/math/rempio2_y0 + local.get $0 + local.get $1 + f64.sub + local.get $2 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $7 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.0 + end + i32.const 0 + local.get $5 + call $~lib/math/pio2_large_quot + local.tee $3 + i32.sub + local.get $3 + local.get $6 + select + end + local.set $3 + global.get $~lib/math/rempio2_y0 + local.set $1 + global.get $~lib/math/rempio2_y1 + local.set $2 + local.get $3 + i32.const 1 + i32.and + if (result f64) + local.get $1 + local.get $1 f64.mul - f64.const 0.5 - f64.add local.tee $0 - f64.sqrt - local.tee $4 + local.get $1 + f64.mul + local.set $7 + local.get $1 local.get $0 + local.get $2 + f64.const 0.5 + f64.mul + local.get $7 local.get $0 local.get $0 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add local.get $0 local.get $0 local.get $0 - f64.const 3.479331075960212e-05 f64.mul - f64.const 7.915349942898145e-04 - f64.add f64.mul - f64.const -0.04005553450067941 - f64.add + local.get $0 + f64.const 1.58969099521155e-10 f64.mul - f64.const 0.20121253213486293 + f64.const -2.5050760253406863e-08 f64.add f64.mul - f64.const -0.3255658186224009 f64.add f64.mul - f64.const 0.16666666666666666 - f64.add + f64.sub f64.mul + local.get $2 + f64.sub + local.get $7 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub + else + local.get $1 + local.get $1 + f64.mul + local.tee $7 + local.get $7 + f64.mul + local.set $8 + f64.const 1 + local.get $7 + f64.const 0.5 + f64.mul + local.tee $0 + f64.sub + local.tee $9 + f64.const 1 + local.get $9 + f64.sub local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 0.07703815055590194 + f64.sub + local.get $7 + local.get $7 + local.get $7 + local.get $7 + f64.const 2.480158728947673e-05 f64.mul - f64.const -0.6882839716054533 + f64.const -0.001388888888887411 f64.add f64.mul - f64.const 2.0209457602335057 + f64.const 0.0416666666666666 f64.add f64.mul - f64.const -2.403394911734414 - f64.add + local.get $8 + local.get $8 f64.mul - f64.const 1 + local.get $7 + local.get $7 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 f64.add - f64.div - local.get $4 f64.mul - f64.const -6.123233995736766e-17 + f64.const -2.7557314351390663e-07 f64.add + f64.mul f64.add - f64.sub - f64.const 2 f64.mul - return + local.get $1 + local.get $2 + f64.mul + f64.sub + f64.add + f64.add end - f64.const 0.5 - local.get $0 - f64.const 0.5 - f64.mul - f64.sub - local.tee $4 - f64.sqrt - local.tee $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 local.tee $0 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - f64.const 3.479331075960212e-05 - f64.mul - f64.const 7.915349942898145e-04 - f64.add - f64.mul - f64.const -0.04005553450067941 - f64.add - f64.mul - f64.const 0.20121253213486293 - f64.add - f64.mul - f64.const -0.3255658186224009 - f64.add - f64.mul - f64.const 0.16666666666666666 - f64.add - f64.mul - local.get $4 - local.get $4 - local.get $4 - local.get $4 - f64.const 0.07703815055590194 - f64.mul - f64.const -0.6882839716054533 - f64.add - f64.mul - f64.const 2.0209457602335057 - f64.add - f64.mul - f64.const -2.403394911734414 - f64.add - f64.mul - f64.const 1 - f64.add - f64.div - local.get $5 - f64.mul - local.get $4 - local.get $0 - local.get $0 - f64.mul - f64.sub - local.get $5 - local.get $0 - f64.add - f64.div - f64.add - f64.add - f64.const 2 - f64.mul - ) - (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f32) + f64.neg local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 2147483647 + local.get $3 + i32.const 1 + i32.add + i32.const 2 i32.and - local.tee $1 - i32.const 1065353216 - i32.ge_u - if - local.get $1 - i32.const 1065353216 - i32.eq - if - f32.const 3.141592502593994 - f32.const 0 - local.get $2 - i32.const 0 - i32.lt_s - select - return - end - f32.const 0 - local.get $0 - local.get $0 - f32.sub - f32.div - return - end - local.get $1 - i32.const 1056964608 - i32.lt_u - if - local.get $1 - i32.const 847249408 - i32.le_u - if - f32.const 1.570796251296997 - return - end - f32.const 1.570796251296997 - local.get $0 - f32.const 7.549789415861596e-08 - local.get $0 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - local.get $0 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - f32.mul - f32.sub - f32.sub - f32.sub - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - f32.const 1.570796251296997 - local.get $0 - f32.const 0.5 - f32.mul - f32.const 0.5 - f32.add - local.tee $0 - f32.sqrt - local.tee $3 + select + ) + (func $std/math/test_mod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 f64) + (local $9 i64) + (local $10 i64) + block $__inlined_func$~lib/math/NativeMath.mod$2 (result f64) local.get $0 local.get $0 + f64.trunc + f64.sub local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul + f64.copysign + local.get $1 + f64.abs + f64.const 1 + f64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $9 + local.get $7 + i64.const 1 + i64.shl + local.tee $5 + i64.eqz local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - local.get $3 - f32.mul - f32.const -7.549789415861596e-08 - f32.add - f32.add - f32.sub - f32.const 2 - f32.mul - return - end - f32.const 0.5 - local.get $0 - f32.const 0.5 - f32.mul - f32.sub - local.tee $3 - f32.sqrt - local.tee $4 - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $0 - local.get $3 - local.get $3 - local.get $3 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul - local.get $3 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - local.get $4 - f32.mul - local.get $3 - local.get $0 - local.get $0 - f32.mul - f32.sub - local.get $4 - local.get $0 - f32.add - f32.div - f32.add - f32.add - f32.const 2 - f32.mul - ) - (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 i32) - (local $6 f64) - (local $7 f64) - i32.const 1 - local.set $2 - local.get $0 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_u - local.get $5 - i32.const 1071284858 - i32.lt_u - i32.or - if - local.get $5 - i32.const -1074790400 - i32.ge_u + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $10 + i64.const 2047 + i64.eq + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if local.get $0 - f64.const -1 - f64.eq - if - local.get $0 - f64.const 0 - f64.div - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 + local.get $1 + f64.mul + local.tee $8 + local.get $8 f64.div - return + br $__inlined_func$~lib/math/NativeMath.mod$2 end + local.get $4 + i64.const 1 + i64.shl + local.tee $3 local.get $5 - i32.const 1 - i32.shl - i32.const 2034237440 - i32.lt_u + i64.le_u if local.get $0 - return + local.get $3 + local.get $5 + i64.ne + f64.convert_i32_u + f64.mul + br $__inlined_func$~lib/math/NativeMath.mod$2 end - local.get $5 - i32.const -1076707644 - i32.le_u - if (result f64) - i32.const 0 - local.set $2 - local.get $0 + local.get $4 + i64.const 63 + i64.shr_u + local.set $6 + local.get $10 + i64.eqz + if (result i64) + local.get $4 + i64.const 1 + local.get $10 + local.get $4 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $10 + i64.sub + i64.shl else - f64.const 0 + local.get $4 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or end - local.set $1 - else - local.get $5 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - return + local.set $3 + local.get $9 + i64.eqz + if (result i64) + local.get $7 + i64.const 1 + local.get $9 + local.get $7 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $9 + i64.sub + i64.shl + else + local.get $7 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or end - end - local.get $2 - if - local.get $0 - f64.const 1 - f64.add - i64.reinterpret_f64 - local.tee $3 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 614242 - i32.add - local.tee $5 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.tee $2 - i32.const 54 - i32.lt_s - if (result f64) - f64.const 1 - local.get $3 - f64.reinterpret_i64 - local.tee $1 - local.get $0 - f64.sub - f64.sub + local.set $4 + loop $while-continue|0 + local.get $9 + local.get $10 + i64.lt_s + if + local.get $3 + local.get $4 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $4 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $3 + local.get $4 + i64.sub + else + local.get $3 + end + i64.const 1 + i64.shl + local.set $3 + local.get $10 + i64.const 1 + i64.sub + local.set $10 + br $while-continue|0 + end + end + local.get $3 + local.get $4 + i64.ge_u + if local.get $0 - local.get $1 - f64.const -1 - f64.add - f64.sub - local.get $2 - i32.const 2 - i32.ge_s - select - local.get $1 - f64.div - else f64.const 0 + f64.mul + local.get $3 + local.get $4 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$2 + drop + local.get $3 + local.get $4 + i64.sub + local.set $3 end + local.get $10 + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $5 + i64.sub local.set $4 local.get $3 - i64.const 4294967295 - i64.and local.get $5 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 + i64.shl + local.set $3 + local.get $4 + i64.const 0 + i64.gt_s + if (result i64) + local.get $3 + i64.const 4503599627370496 + i64.sub + local.get $4 + i64.const 52 + i64.shl + i64.or + else + local.get $3 + i64.const 1 + local.get $4 + i64.sub + i64.shr_u + end + local.get $6 + i64.const 63 i64.shl i64.or f64.reinterpret_i64 - f64.const -1 - f64.add - local.set $1 - end - local.get $1 - local.get $1 - f64.const 2 - f64.add - f64.div - local.tee $6 - local.get $6 - f64.mul - local.tee $7 - local.get $7 - f64.mul - local.set $0 - local.get $6 - local.get $1 - f64.const 0.5 - f64.mul - local.get $1 - f64.mul - local.tee $6 - local.get $7 - local.get $0 - local.get $0 - local.get $0 - f64.const 0.14798198605116586 - f64.mul - f64.const 0.1818357216161805 - f64.add - f64.mul - f64.const 0.2857142874366239 - f64.add - f64.mul - f64.const 0.6666666666666735 - f64.add - f64.mul - local.get $0 - local.get $0 - local.get $0 - f64.const 0.15313837699209373 - f64.mul - f64.const 0.22222198432149784 - f64.add - f64.mul - f64.const 0.3999999999940942 - f64.add - f64.mul - f64.add - f64.add - f64.mul - local.get $2 - f64.convert_i32_s - local.tee $0 - f64.const 1.9082149292705877e-10 - f64.mul - local.get $4 - f64.add - f64.add - local.get $6 - f64.sub - local.get $1 - f64.add - local.get $0 - f64.const 0.6931471803691238 - f64.mul - f64.add - ) - (func $~lib/math/NativeMath.log (param $0 f64) (result f64) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 i32) - block $~lib/util/math/log_lut|inlined.0 (result f64) - local.get $0 - i64.reinterpret_f64 - local.tee $1 - i64.const 4606619468846596096 - i64.sub - i64.const 854320534781952 - i64.lt_u - if - local.get $0 - f64.const -1 - f64.add - local.tee $0 - local.get $0 - f64.mul - local.tee $4 - local.get $0 - f64.mul - local.tee $5 - local.get $0 - f64.const -0.24999999999998432 - f64.mul - f64.const 0.3333333333333352 - f64.add - local.get $4 - f64.const 0.19999999999320328 - f64.mul - f64.add - local.get $5 - local.get $0 - f64.const 0.14285715076560868 - f64.mul - f64.const -0.16666666669929706 - f64.add - local.get $4 - f64.const -0.12499997863982555 - f64.mul - f64.add - local.get $5 - local.get $0 - f64.const -0.10000486757818193 - f64.mul - f64.const 0.11110712032936046 - f64.add - local.get $4 - f64.const 0.09181994006195467 - f64.mul - f64.add - local.get $5 - f64.const -0.08328363062289341 - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 134217728 - f64.mul - local.tee $4 - f64.add - local.get $4 - f64.sub - local.tee $4 - local.get $4 - f64.mul - f64.const -0.5 - f64.mul - local.tee $5 - f64.add - local.tee $6 - f64.sub - local.get $5 - f64.add - local.get $0 - local.get $4 - f64.sub - f64.const -0.5 - f64.mul - local.get $4 - local.get $0 - f64.add - f64.mul - f64.add - f64.add - local.get $6 - f64.add - br $~lib/util/math/log_lut|inlined.0 - end - local.get $1 - i64.const 48 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.const 16 - i32.sub - i32.const 32736 - i32.ge_u - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - local.get $1 - i64.const 1 - i64.shl - i64.eqz - br_if $~lib/util/math/log_lut|inlined.0 - drop - local.get $0 - local.get $1 - i64.const 9218868437227405312 - i64.eq - br_if $~lib/util/math/log_lut|inlined.0 - drop - i32.const 1 - local.get $2 - i32.const 32752 - i32.and - i32.const 32752 - i32.eq - local.get $2 - i32.const 32768 - i32.and - select - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - local.get $0 - f64.div - br $~lib/util/math/log_lut|inlined.0 - end - local.get $0 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - i64.const 234187180623265792 - i64.sub - local.set $1 - end - local.get $1 - i64.const 4604367669032910848 - i64.sub - local.tee $3 - i64.const 45 - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - i32.const 4 - i32.shl - local.tee $2 - i32.const 1088 - i32.add - local.set $7 - local.get $3 - i64.const 52 - i64.shr_s - f64.convert_i64_s - local.tee $0 - f64.const 0.6931471805598903 - f64.mul - local.get $7 - f64.load offset=8 - f64.add - local.tee $4 - local.get $1 - local.get $3 - i64.const -4503599627370496 - i64.and - i64.sub - f64.reinterpret_i64 - local.get $2 - i32.const 3136 - i32.add - local.tee $2 - f64.load - f64.sub - local.get $2 - f64.load offset=8 - f64.sub - local.get $7 - f64.load - f64.mul - local.tee $5 - f64.add - local.set $6 - local.get $4 - local.get $6 - f64.sub - local.get $5 - f64.add - local.get $0 - f64.const 5.497923018708371e-14 - f64.mul - f64.add - local.get $5 - local.get $5 - f64.mul - local.tee $0 - f64.const -0.5000000000000001 - f64.mul - f64.add - local.get $5 - local.get $0 - f64.mul - local.get $5 - f64.const -0.2499999999622955 - f64.mul - f64.const 0.33333333331825593 - f64.add - local.get $0 - local.get $5 - f64.const -0.16667054827627667 - f64.mul - f64.const 0.20000304511814496 - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.get $6 - f64.add - end - ) - (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i64) - block $__inlined_func$~lib/math/NativeMath.acosh$8 (result f64) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.div - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 4607182418800017408 - i64.lt_s - br_if $__inlined_func$~lib/math/NativeMath.acosh$8 - drop - local.get $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $4 - i64.const 1024 - i64.lt_u - if - local.get $0 - f64.const -1 - f64.add - local.tee $3 - local.get $3 - local.get $3 - f64.mul - local.get $3 - local.get $3 - f64.add - f64.add - f64.sqrt - f64.add - call $~lib/math/NativeMath.log1p - br $__inlined_func$~lib/math/NativeMath.acosh$8 - end - local.get $4 - i64.const 1049 - i64.lt_u - if - local.get $0 - local.get $0 - f64.add - f64.const 1 - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.const -1 - f64.add - f64.sqrt - f64.add - f64.div - f64.sub - call $~lib/math/NativeMath.log - br $__inlined_func$~lib/math/NativeMath.acosh$8 - end - local.get $0 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add end + local.get $2 + f64.const 0 + call $std/math/check + if (result i32) + local.get $0 + local.get $1 + call $std/math/mod + local.get $2 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + ) + (func $std/math/test_pow (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + local.get $0 local.get $1 + call $~lib/math/NativeMath.pow local.get $2 + local.get $3 call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/dom/Math.acosh local.get $1 + call $~lib/bindings/dom/Math.pow local.get $2 + local.get $3 call $std/math/check else i32.const 0 end ) - (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) - (local $1 f32) + (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) (local $2 i32) - (local $3 f32) + (local $3 i32) (local $4 i32) - (local $5 f32) - (local $6 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + local.get $1 + i32.reinterpret_f32 + local.tee $7 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $4 + local.get $7 i32.const 1 - local.set $2 + i32.shl + i32.eqz local.get $0 i32.reinterpret_f32 - local.tee $4 - i32.const 31 + local.tee $6 + i32.const 23 i32.shr_u - local.get $4 - i32.const 1054086096 - i32.lt_u + i32.const 255 + i32.and + local.tee $3 + i32.const 255 + i32.eq + i32.or + local.get $1 + local.get $1 + f32.ne i32.or if - local.get $4 - i32.const -1082130432 - i32.ge_u - if - local.get $0 - f32.const -1 - f32.eq - if - local.get $0 - f32.const 0 - f32.div - return - end - local.get $0 - local.get $0 - f32.sub - f32.const 0 - f32.div - return - end - local.get $4 + local.get $0 + local.get $1 + f32.mul + local.tee $0 + local.get $0 + f32.div + return + end + local.get $6 + i32.const 1 + i32.shl + i32.eqz + if + local.get $0 + return + end + local.get $3 + if (result i32) + local.get $6 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $6 i32.const 1 + local.get $3 + local.get $6 + i32.const 9 i32.shl - i32.const 1728053248 - i32.lt_u + i32.clz + i32.sub + local.tee $3 + i32.sub + i32.shl + end + local.set $2 + local.get $4 + if (result i32) + local.get $7 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $7 + i32.const 1 + local.get $4 + local.get $7 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $4 + i32.sub + i32.shl + end + local.set $7 + block $do-break|0 + local.get $3 + local.get $4 + i32.lt_s if + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.eq + br_if $do-break|0 local.get $0 return end - local.get $4 - i32.const -1097468391 - i32.le_u - if (result f32) - i32.const 0 - local.set $2 - local.get $0 - else - f32.const 0 - end - local.set $1 - else - local.get $4 - i32.const 2139095040 + loop $while-continue|1 + local.get $3 + local.get $4 + i32.gt_s + if + local.get $2 + local.get $7 + i32.ge_u + if (result i32) + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i32.sub + else + local.get $2 + end + i32.const 1 + i32.shl + local.set $2 + local.get $5 + i32.const 1 + i32.shl + local.set $5 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + local.get $2 + local.get $7 i32.ge_u if - local.get $0 - return + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i32.sub + local.set $2 end - end - local.get $2 - if - local.get $0 - f32.const 1 - f32.add - local.tee $1 - i32.reinterpret_f32 - i32.const 4913933 - i32.add - local.tee $4 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.tee $2 - i32.const 25 - i32.lt_s - if (result f32) - f32.const 1 - local.get $1 - local.get $0 - f32.sub - f32.sub - local.get $0 - local.get $1 - f32.const -1 - f32.add - f32.sub + local.get $2 + if + local.get $3 local.get $2 - i32.const 2 - i32.ge_s - select - local.get $1 - f32.div + i32.const 8 + i32.shl + i32.clz + local.tee $7 + i32.sub + local.set $3 + local.get $2 + local.get $7 + i32.shl + local.set $2 else - f32.const 0 + i32.const -30 + local.set $3 end - local.set $3 - local.get $4 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const -1 - f32.add - local.set $1 end local.get $1 - local.get $1 - f32.const 2 - f32.add - f32.div - local.tee $5 - local.get $5 - f32.mul + f32.abs + local.set $1 + local.get $3 + i32.const 0 + i32.gt_s + if (result i32) + local.get $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + else + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u + end + f32.reinterpret_i32 local.tee $0 local.get $0 - f32.mul - local.set $6 - local.get $5 - local.get $1 - f32.const 0.5 - f32.mul - local.get $1 - f32.mul - local.tee $5 - local.get $0 - local.get $6 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $6 - local.get $6 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul f32.add - f32.add - f32.mul - local.get $2 - f32.convert_i32_s - local.tee $0 - f32.const 9.05800061445916e-06 - f32.mul - local.get $3 - f32.add - f32.add - local.get $5 - f32.sub + local.set $8 + local.get $0 local.get $1 - f32.add + f32.sub local.get $0 - f32.const 0.6931381225585938 - f32.mul - f32.add - ) - (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) - (local $1 i32) - (local $2 f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - block $~lib/util/math/logf_lut|inlined.0 (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 8388608 - i32.sub - i32.const 2130706432 - i32.ge_u - if - f32.const -inf - local.get $1 + local.get $3 + local.get $4 + i32.eq + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.eq + if (result i32) + local.get $5 i32.const 1 - i32.shl - local.tee $4 - i32.eqz - br_if $~lib/util/math/logf_lut|inlined.0 - drop - local.get $0 + i32.and local.get $1 - i32.const 2139095040 - i32.eq - br_if $~lib/util/math/logf_lut|inlined.0 - drop + local.get $8 + f32.eq + i32.and local.get $1 - i32.const 31 - i32.shr_u - local.get $4 - i32.const -16777216 - i32.ge_u + local.get $8 + f32.lt i32.or - if - local.get $0 - local.get $0 - f32.sub - local.tee $0 - local.get $0 - f32.div - br $~lib/util/math/logf_lut|inlined.0 - end - local.get $0 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - i32.const 192937984 - i32.sub - local.set $1 - end - local.get $1 - i32.const 1060306944 - i32.sub - local.tee $4 - i32.const 19 - i32.shr_u - i32.const 15 - i32.and - i32.const 4 - i32.shl - i32.const 5184 - i32.add - local.set $5 - local.get $1 - local.get $4 - i32.const -8388608 - i32.and - i32.sub - f32.reinterpret_i32 - f64.promote_f32 - local.get $5 - f64.load - f64.mul - f64.const -1 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.set $3 - local.get $2 - f64.const 0.333456765744066 - f64.mul - f64.const -0.4999997485802103 - f64.add - local.get $3 - f64.const -0.25089342214237154 - f64.mul - f64.add - local.get $3 - f64.mul - local.get $5 - f64.load offset=8 - local.get $4 - i32.const 23 - i32.shr_s - f64.convert_i32_s - f64.const 0.6931471805599453 - f64.mul - f64.add - local.get $2 - f64.add - f64.add - f32.demote_f64 - end - ) - (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - block $__inlined_func$~lib/math/NativeMathf.acosh$9 (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 2147483647 - i32.and - i32.const 1073741824 - i32.lt_u - if - local.get $0 - f32.const -1 - f32.add - local.tee $0 - local.get $0 - local.get $0 - f32.const 2 - f32.add - f32.mul - f32.sqrt - f32.add - call $~lib/math/NativeMathf.log1p - br $__inlined_func$~lib/math/NativeMathf.acosh$9 - end - local.get $3 - i32.const 1166016512 - i32.lt_u - if - local.get $0 - local.get $0 - f32.add - f32.const 1 - local.get $0 - local.get $0 - local.get $0 - f32.mul - f32.const -1 - f32.add - f32.sqrt - f32.add - f32.div - f32.sub - call $~lib/math/NativeMathf.log - br $__inlined_func$~lib/math/NativeMathf.acosh$9 + else + i32.const 0 end - local.get $0 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add end - local.get $1 - local.get $2 - call $std/math/check + select + local.tee $0 + f32.neg + local.get $0 + local.get $6 + i32.const 0 + i32.lt_s + select ) - (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) - (local $1 i32) + (func $~lib/math/NativeMath.rem (param $0 f64) (param $1 f64) (result f64) (local $2 i64) - (local $3 i32) - (local $4 f64) - (local $5 f64) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 f64) + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $4 + local.get $7 + i64.const 1 + i64.shl + i64.eqz local.get $0 i64.reinterpret_f64 - local.tee $2 - i64.const 32 + local.tee $6 + i64.const 52 i64.shr_u - i32.wrap_i64 + i64.const 2047 + i64.and local.tee $3 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1072693248 - i32.ge_u + i64.const 2047 + i64.eq + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if - local.get $2 - i32.wrap_i64 - local.get $1 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - f64.const 1.5707963267948966 - f64.mul - f64.const 7.52316384526264e-37 - f64.add - return - end - f64.const 0 local.get $0 + local.get $1 + f64.mul + local.tee $0 local.get $0 - f64.sub f64.div return end - local.get $1 - i32.const 1071644672 - i32.lt_u + local.get $6 + i64.const 1 + i64.shl + i64.eqz if - local.get $1 - i32.const 1045430272 - i32.lt_u - local.get $1 - i32.const 1048576 - i32.ge_u - i32.and + local.get $0 + return + end + local.get $3 + i64.eqz + if (result i64) + local.get $6 + i64.const 1 + local.get $3 + local.get $6 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $3 + i64.sub + i64.shl + else + local.get $6 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $2 + local.get $4 + i64.eqz + if (result i64) + local.get $7 + i64.const 1 + local.get $4 + local.get $7 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $4 + i64.sub + i64.shl + else + local.get $7 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $7 + block $do-break|0 + local.get $3 + local.get $4 + i64.lt_s if + local.get $3 + i64.const 1 + i64.add + local.get $4 + i64.eq + br_if $do-break|0 local.get $0 return end - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 3.479331075960212e-05 - f64.mul - f64.const 7.915349942898145e-04 - f64.add - f64.mul - f64.const -0.04005553450067941 - f64.add - f64.mul - f64.const 0.20121253213486293 - f64.add - f64.mul - f64.const -0.3255658186224009 - f64.add - f64.mul - f64.const 0.16666666666666666 - f64.add - f64.mul - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.const -0.6882839716054533 - f64.add - f64.mul - f64.const 2.0209457602335057 - f64.add - f64.mul - f64.const -2.403394911734414 - f64.add - f64.mul - f64.const 1 - f64.add - f64.div - f64.mul - f64.add - return + loop $while-continue|1 + local.get $3 + local.get $4 + i64.gt_s + if + local.get $2 + local.get $7 + i64.ge_u + if (result i64) + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i64.sub + else + local.get $2 + end + i64.const 1 + i64.shl + local.set $2 + local.get $5 + i32.const 1 + i32.shl + local.set $5 + local.get $3 + i64.const 1 + i64.sub + local.set $3 + br $while-continue|1 + end + end + local.get $2 + local.get $7 + i64.ge_u + if + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $2 + local.get $7 + i64.sub + local.set $2 + end + local.get $2 + i64.eqz + if + i64.const -60 + local.set $3 + else + local.get $3 + local.get $2 + i64.const 11 + i64.shl + i64.clz + local.tee $7 + i64.sub + local.set $3 + local.get $2 + local.get $7 + i64.shl + local.set $2 + end end - f64.const 0.5 - local.get $0 + local.get $1 f64.abs - f64.const 0.5 - f64.mul - f64.sub + local.set $1 + local.get $3 + i64.const 0 + i64.gt_s + if (result i64) + local.get $2 + i64.const 4503599627370496 + i64.sub + local.get $3 + i64.const 52 + i64.shl + i64.or + else + local.get $2 + i64.const 1 + local.get $3 + i64.sub + i64.shr_u + end + f64.reinterpret_i64 local.tee $0 - f64.sqrt - local.set $4 - local.get $0 - local.get $0 - local.get $0 local.get $0 - local.get $0 - local.get $0 - f64.const 3.479331075960212e-05 - f64.mul - f64.const 7.915349942898145e-04 - f64.add - f64.mul - f64.const -0.04005553450067941 - f64.add - f64.mul - f64.const 0.20121253213486293 - f64.add - f64.mul - f64.const -0.3255658186224009 - f64.add - f64.mul - f64.const 0.16666666666666666 f64.add - f64.mul - local.get $0 - local.get $0 - local.get $0 + local.set $8 local.get $0 - f64.const 0.07703815055590194 - f64.mul - f64.const -0.6882839716054533 - f64.add - f64.mul - f64.const 2.0209457602335057 - f64.add - f64.mul - f64.const -2.403394911734414 - f64.add - f64.mul - f64.const 1 - f64.add - f64.div - local.set $5 local.get $1 - i32.const 1072640819 - i32.ge_u - if (result f64) - f64.const 1.5707963267948966 - local.get $4 - local.get $4 - local.get $5 - f64.mul - f64.add - f64.const 2 - f64.mul - f64.const -6.123233995736766e-17 - f64.add - f64.sub + f64.sub + local.get $0 + local.get $3 + local.get $4 + i64.eq + if (result i32) + i32.const 1 else - f64.const 0.7853981633974483 - local.get $4 - local.get $4 - f64.add - local.get $5 - f64.mul - f64.const 6.123233995736766e-17 - local.get $0 - local.get $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.mul - f64.sub + local.get $3 + i64.const 1 + i64.add local.get $4 - local.get $0 - f64.add - f64.div - f64.const 2 - f64.mul - f64.sub - f64.sub - f64.const 0.7853981633974483 - local.get $0 - local.get $0 - f64.add - f64.sub - f64.sub - f64.sub + i64.eq + if (result i32) + local.get $5 + i32.const 1 + i32.and + local.get $1 + local.get $8 + f64.eq + i32.and + local.get $1 + local.get $8 + f64.lt + i32.or + else + i32.const 0 + end end + select local.tee $0 f64.neg local.get $0 - local.get $3 - i32.const 0 - i32.lt_s + local.get $6 + i64.const 0 + i64.lt_s select ) - (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) - (local $1 i32) - (local $2 f64) - (local $3 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $1 - i32.const 1065353216 - i32.ge_u + (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + f32.abs + f32.const 1 + f32.eq if - local.get $1 - i32.const 1065353216 - i32.eq - if - local.get $0 - f32.const 1.5707963705062866 - f32.mul - f32.const 7.52316384526264e-37 - f32.add - return - end - f32.const 0 local.get $0 local.get $0 + f32.trunc f32.sub - f32.div + local.get $0 + f32.copysign return end local.get $1 - i32.const 1056964608 - i32.lt_u + i32.reinterpret_f32 + local.tee $6 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $7 + local.get $6 + i32.const 1 + i32.shl + local.tee $4 + i32.eqz + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $8 + i32.const 255 + i32.eq + i32.or + local.get $1 + local.get $1 + f32.ne + i32.or if - local.get $1 - i32.const 964689920 - i32.lt_u - local.get $1 - i32.const 8388608 - i32.ge_u - i32.and - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 local.get $0 + local.get $1 f32.mul local.tee $0 local.get $0 - local.get $0 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul - local.get $0 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add f32.div - f32.mul - f32.add return end - f64.const 1.5707963705062866 - f32.const 0.5 - local.get $0 - f32.abs - f32.const 0.5 - f32.mul - f32.sub - local.tee $3 - f64.promote_f32 - f64.sqrt - local.tee $2 - local.get $2 - local.get $3 - local.get $3 - local.get $3 - f32.const -0.008656363002955914 - f32.mul - f32.const -0.04274342209100723 - f32.add - f32.mul - f32.const 0.16666586697101593 - f32.add - f32.mul local.get $3 - f32.const -0.7066296339035034 - f32.mul - f32.const 1 - f32.add - f32.div - f64.promote_f32 - f64.mul - f64.add - f64.const 2 - f64.mul - f64.sub - f32.demote_f64 - local.get $0 - f32.copysign - ) - (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i64) - (local $4 i64) - (local $5 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $3 + i32.const 1 + i32.shl + local.tee $2 local.get $4 - i64.const 9223372036854775807 - i64.and - f64.reinterpret_i64 - local.set $5 + i32.le_u + if + local.get $0 + local.get $2 + local.get $4 + i32.ne + f32.convert_i32_u + f32.mul + return + end local.get $3 - i64.const 1049 - i64.ge_u - if (result f64) - local.get $5 - call $~lib/math/NativeMath.log - f64.const 0.6931471805599453 - f64.add + i32.const -2147483648 + i32.and + local.set $5 + local.get $8 + if (result i32) + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or else local.get $3 - i64.const 1024 - i64.ge_u - if (result f64) - local.get $5 - local.get $5 - f64.add - f64.const 1 - local.get $5 - local.get $5 - f64.mul - f64.const 1 - f64.add - f64.sqrt - local.get $5 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log - else - local.get $3 - i64.const 997 - i64.ge_u - if (result f64) - local.get $5 - local.get $5 - local.get $5 - f64.mul - local.tee $5 - local.get $5 - f64.const 1 - f64.add - f64.sqrt - f64.const 1 - f64.add - f64.div - f64.add - call $~lib/math/NativeMath.log1p - else - local.get $5 - end - end + i32.const 1 + local.get $8 + local.get $3 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $8 + i32.sub + i32.shl end - local.get $0 - f64.copysign - local.get $1 - local.get $2 - call $std/math/check + local.set $2 + local.get $7 if (result i32) - local.get $0 - call $~lib/bindings/dom/Math.asinh - local.get $1 - local.get $2 - call $std/math/check + local.get $6 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or else - i32.const 0 + local.get $6 + i32.const 1 + local.get $7 + local.get $6 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $7 + i32.sub + i32.shl end - ) - (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - f32.reinterpret_i32 - local.set $4 - local.get $3 - i32.const 1166016512 - i32.ge_u - if (result f32) - local.get $4 - call $~lib/math/NativeMathf.log - f32.const 0.6931471824645996 - f32.add - else - local.get $3 - i32.const 1073741824 - i32.ge_u - if (result f32) - local.get $4 - local.get $4 - f32.add - f32.const 1 - local.get $4 - local.get $4 - f32.mul - f32.const 1 - f32.add - f32.sqrt - local.get $4 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log - else + local.set $3 + loop $while-continue|0 + local.get $7 + local.get $8 + i32.lt_s + if + local.get $2 local.get $3 - i32.const 964689920 i32.ge_u - if (result f32) - local.get $4 - local.get $4 - local.get $4 - f32.mul - local.tee $4 - local.get $4 - f32.const 1 - f32.add - f32.sqrt - f32.const 1 - f32.add - f32.div - f32.add - call $~lib/math/NativeMathf.log1p + if (result i32) + local.get $2 + local.get $3 + i32.eq + if + local.get $0 + f32.const 0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub else - local.get $4 + local.get $2 end + i32.const 1 + i32.shl + local.set $2 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + br $while-continue|0 end end - local.get $0 - f32.copysign - local.get $1 local.get $2 - call $std/math/check + local.get $3 + i32.ge_u + if + local.get $2 + local.get $3 + i32.eq + if + local.get $0 + f32.const 0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub + local.set $2 + end + local.get $8 + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.tee $4 + i32.sub + local.set $3 + local.get $2 + local.get $4 + i32.shl + local.set $2 + local.get $3 + i32.const 0 + i32.gt_s + if (result i32) + local.get $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + else + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u + end + local.get $5 + i32.or + f32.reinterpret_i32 ) - (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) + (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) (local $1 f64) - (local $2 i32) + (local $2 f64) (local $3 i32) - (local $4 f64) - (local $5 f64) - local.get $0 - local.set $1 + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) local.get $0 i64.reinterpret_f64 + local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $6 + local.get $3 i32.const 2147483647 i32.and - local.tee $2 - i32.const 1141899264 - i32.ge_u + local.tee $3 + i32.const 1072243195 + i32.le_u if - local.get $0 - local.get $0 - f64.ne + local.get $3 + i32.const 1045430272 + i32.lt_u if local.get $0 return end - f64.const 1.5707963267948966 + local.get $0 + local.get $0 + local.get $0 + f64.mul + local.tee $1 + local.get $0 + f64.mul local.get $1 - f64.copysign + local.get $1 + local.get $1 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $1 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.const -0.16666666666666632 + f64.add + f64.mul + f64.add return end - local.get $2 - i32.const 1071382528 - i32.lt_u + local.get $3 + i32.const 2146435072 + i32.ge_u if - local.get $2 - i32.const 1044381696 - i32.lt_u - if - local.get $0 - return - end - i32.const -1 - local.set $3 - else local.get $0 - f64.abs - local.set $0 - local.get $2 - i32.const 1072889856 + local.get $0 + f64.sub + return + end + block $~lib/math/rempio2|inlined.1 (result i32) + local.get $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1073928572 i32.lt_u - if (result f64) - local.get $2 - i32.const 1072037888 - i32.lt_u - if (result f64) - local.get $0 - local.get $0 - f64.add - f64.const -1 - f64.add - local.get $0 - f64.const 2 - f64.add - f64.div - else - i32.const 1 - local.set $3 - local.get $0 - f64.const -1 - f64.add - local.get $0 - f64.const 1 - f64.add - f64.div - end - else - local.get $2 - i32.const 1073971200 - i32.lt_u + if + i32.const 1 + local.set $3 + local.get $6 if (result f64) - i32.const 2 - local.set $3 - local.get $0 - f64.const -1.5 - f64.add local.get $0 - f64.const 1.5 - f64.mul - f64.const 1 + f64.const 1.5707963267341256 f64.add - f64.div - else - i32.const 3 + local.set $0 + i32.const -1 local.set $3 - f64.const -1 - local.get $0 - f64.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $4 - local.get $0 - local.get $5 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - f64.const 0.016285820115365782 - f64.mul - f64.const 0.049768779946159324 - f64.add - f64.mul - f64.const 0.06661073137387531 - f64.add - f64.mul - f64.const 0.09090887133436507 - f64.add - f64.mul - f64.const 0.14285714272503466 - f64.add - f64.mul - f64.const 0.3333333333333293 - f64.add - f64.mul - local.get $4 - local.get $4 - local.get $4 - local.get $4 - local.get $4 - f64.const -0.036531572744216916 - f64.mul - f64.const -0.058335701337905735 - f64.add - f64.mul - f64.const -0.0769187620504483 - f64.add - f64.mul - f64.const -0.11111110405462356 - f64.add - f64.mul - f64.const -0.19999999999876483 - f64.add - f64.mul - f64.add - f64.mul - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $4 - f64.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 - end - f64.const 0.4636476090008061 - local.get $4 - f64.const -2.2698777452961687e-17 - f64.add - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - f64.const 0.7853981633974483 - local.get $4 - f64.const -3.061616997868383e-17 - f64.add + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 f64.sub - f64.sub + f64.const 6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $1 + f64.const 2.0222662487959506e-21 + f64.add local.set $0 - br $break|0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add end - f64.const 0.982793723247329 - local.get $4 - f64.const -1.3903311031230998e-17 - f64.add + else local.get $0 - f64.sub - f64.sub + f64.const -1.5707963267341256 + f64.add local.set $0 - br $break|0 + local.get $4 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const -6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const -6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const -6.077100506303966e-11 + f64.add + local.tee $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add + end end - f64.const 1.5707963267948966 - local.get $4 - f64.const -6.123233995736766e-17 - f64.add - local.get $0 - f64.sub - f64.sub - local.set $0 - br $break|0 - end - unreachable - end - local.get $0 - local.get $1 - f64.copysign - ) - (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - local.get $0 - local.set $1 - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 1283457024 - i32.ge_u - if - local.get $0 - local.get $0 - f32.ne - if local.get $0 - return + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + local.get $3 + br $~lib/math/rempio2|inlined.1 end - f32.const 1.570796251296997 - local.get $1 - f32.copysign - return - end - local.get $2 - i32.const 1054867456 - i32.lt_u - if - local.get $2 - i32.const 964689920 + local.get $4 + i32.const 1094263291 i32.lt_u if + local.get $4 + i32.const 20 + i32.shr_u + local.tee $3 local.get $0 - return - end - i32.const -1 - local.set $3 - else - local.get $0 - f32.abs - local.set $0 - local.get $2 - i32.const 1066926080 - i32.lt_u - if (result f32) - local.get $2 - i32.const 1060110336 - i32.lt_u - if (result f32) - local.get $0 - local.get $0 - f32.add - f32.const -1 - f32.add - local.get $0 - f32.const 2 - f32.add - f32.div - else - i32.const 1 - local.set $3 - local.get $0 - f32.const -1 - f32.add - local.get $0 - f32.const 1 - f32.add - f32.div - end - else - local.get $2 - i32.const 1075576832 - i32.lt_u - if (result f32) - i32.const 2 - local.set $3 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $7 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 + local.get $7 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 16 + i32.gt_u + if + local.get $7 + f64.const 2.0222662487959506e-21 + f64.mul local.get $0 - f32.const -1.5 - f32.add local.get $0 - f32.const 1.5 - f32.mul - f32.const 1 - f32.add - f32.div - else - i32.const 3 - local.set $3 - f32.const -1 + local.get $7 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $3 local.get $0 - f32.div - end - end - local.set $0 - end - local.get $0 - local.get $0 - f32.mul - local.tee $5 - local.get $5 - f32.mul - local.set $4 - local.get $0 - local.get $5 - local.get $4 - local.get $4 - f32.const 0.06168760731816292 - f32.mul - f32.const 0.14253635704517365 - f32.add - f32.mul - f32.const 0.333333283662796 - f32.add - f32.mul - local.get $4 - local.get $4 - f32.const -0.106480173766613 - f32.mul - f32.const -0.19999158382415771 - f32.add - f32.mul - f32.add - f32.mul - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $4 - f32.sub - return - end - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 - end - f32.const 0.46364760398864746 - local.get $4 - f32.const -5.01215824399992e-09 - f32.add - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - f32.const 0.7853981256484985 - local.get $4 - f32.const -3.774894707930798e-08 - f32.add + local.get $2 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $7 + f64.const 8.4784276603689e-32 + f64.mul local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 + local.get $0 + local.get $7 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $2 + local.get $0 + local.get $2 + f64.sub + local.set $1 end - f32.const 0.9827936887741089 - local.get $4 - f32.const -3.447321716976148e-08 - f32.add - local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 end - f32.const 1.570796251296997 - local.get $4 - f32.const -7.549789415861596e-08 - f32.add + local.get $1 + global.set $~lib/math/rempio2_y0 local.get $0 - f32.sub - f32.sub - local.set $0 - br $break|0 - end - unreachable - end - local.get $0 - local.get $1 - f32.copysign - ) - (func $std/math/test_atanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i64) - (local $4 f64) - (local $5 f64) - local.get $0 - f64.abs - local.set $5 - local.get $0 - i64.reinterpret_f64 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $3 - i64.const 1022 - i64.lt_u - if (result f64) - local.get $3 - i64.const 991 - i64.ge_u - if (result f64) - local.get $5 - local.get $5 - f64.add - local.tee $4 - local.get $4 - local.get $5 - f64.mul - f64.const 1 - local.get $5 + local.get $1 f64.sub - f64.div - f64.add - call $~lib/math/NativeMath.log1p - f64.const 0.5 - f64.mul - else - local.get $5 + local.get $2 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $7 + i32.trunc_sat_f64_s + br $~lib/math/rempio2|inlined.1 end - else - local.get $5 - f64.const 1 + i32.const 0 local.get $5 - f64.sub - f64.div - f64.const 2 + call $~lib/math/pio2_large_quot + local.tee $3 + i32.sub + local.get $3 + local.get $6 + select + end + local.set $3 + global.get $~lib/math/rempio2_y0 + local.set $2 + global.get $~lib/math/rempio2_y1 + local.set $7 + local.get $3 + i32.const 1 + i32.and + if (result f64) + local.get $2 + local.get $2 f64.mul - call $~lib/math/NativeMath.log1p + local.tee $0 + local.get $0 + f64.mul + local.set $1 + f64.const 1 + local.get $0 f64.const 0.5 f64.mul - end - local.get $0 - f64.copysign - local.get $1 - local.get $2 - call $std/math/check - if (result i32) + local.tee $8 + f64.sub + local.tee $9 + f64.const 1 + local.get $9 + f64.sub + local.get $8 + f64.sub local.get $0 - call $~lib/bindings/dom/Math.atanh + local.get $0 + local.get $0 + local.get $0 + f64.const 2.480158728947673e-05 + f64.mul + f64.const -0.001388888888887411 + f64.add + f64.mul + f64.const 0.0416666666666666 + f64.add + f64.mul local.get $1 + local.get $1 + f64.mul + local.get $0 + local.get $0 + f64.const -1.1359647557788195e-11 + f64.mul + f64.const 2.087572321298175e-09 + f64.add + f64.mul + f64.const -2.7557314351390663e-07 + f64.add + f64.mul + f64.add + f64.mul local.get $2 - call $std/math/check + local.get $7 + f64.mul + f64.sub + f64.add + f64.add else - i32.const 0 + local.get $2 + local.get $2 + f64.mul + local.tee $0 + local.get $2 + f64.mul + local.set $1 + local.get $2 + local.get $0 + local.get $7 + f64.const 0.5 + f64.mul + local.get $1 + local.get $0 + local.get $0 + f64.const 2.7557313707070068e-06 + f64.mul + f64.const -1.984126982985795e-04 + f64.add + f64.mul + f64.const 0.00833333333332249 + f64.add + local.get $0 + local.get $0 + local.get $0 + f64.mul + f64.mul + local.get $0 + f64.const 1.58969099521155e-10 + f64.mul + f64.const -2.5050760253406863e-08 + f64.add + f64.mul + f64.add + f64.mul + f64.sub + f64.mul + local.get $7 + f64.sub + local.get $1 + f64.const -0.16666666666666632 + f64.mul + f64.sub + f64.sub end - ) - (func $std/math/test_atanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) + local.tee $0 + f64.neg local.get $0 - f32.abs - local.set $3 + local.get $3 + i32.const 2 + i32.and + select + ) + (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 1056964608 - i32.lt_u - if (result f32) - local.get $4 - i32.const 796917760 - i32.ge_u - if (result f32) - local.get $3 - local.get $3 - f32.add - local.get $3 - f32.const 1 - local.get $3 - f32.sub - f32.div - f32.const 1 - f32.add - f32.mul - call $~lib/math/NativeMathf.log1p - f32.const 0.5 - f32.mul - else - local.get $3 + i64.reinterpret_f64 + local.tee $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 31 + i32.shr_u + local.set $6 + local.get $2 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1072243195 + i32.le_u + if + local.get $2 + i32.const 1044381696 + i32.lt_u + if + local.get $0 + return end - else - local.get $3 - f32.const 1 - local.get $3 - f32.sub - f32.div - f32.const 2 - f32.mul - call $~lib/math/NativeMathf.log1p - f32.const 0.5 - f32.mul + local.get $0 + f64.const 0 + i32.const 1 + call $~lib/math/tan_kern + return end - local.get $0 - f32.copysign - local.get $1 local.get $2 - call $std/math/check - ) - (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 f64) - block $__inlined_func$~lib/math/NativeMath.atan2 (result f64) - local.get $1 - local.get $0 - f64.add - local.get $0 + i32.const 2146435072 + i32.ge_u + if local.get $0 - f64.ne - local.get $1 - local.get $1 - f64.ne - i32.or - br_if $__inlined_func$~lib/math/NativeMath.atan2 - drop local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $9 - local.get $1 - i64.reinterpret_f64 - local.tee $7 + f64.sub + return + end + block $~lib/math/rempio2|inlined.2 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $8 - local.get $7 - i32.wrap_i64 - local.tee $6 - local.get $8 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $0 - call $~lib/math/NativeMath.atan - br $__inlined_func$~lib/math/NativeMath.atan2 - end - local.get $8 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $9 - i32.const 31 - i32.shr_u - i32.or - local.set $4 - local.get $9 i32.const 2147483647 i32.and - local.tee $9 - local.get $5 - i32.wrap_i64 - i32.or - i32.eqz + local.tee $7 + i32.const 1073928572 + i32.lt_u if - block $break|0 - block $case3|0 - block $case2|0 - block $case0|0 - local.get $4 - br_table $case0|0 $case0|0 $case2|0 $case3|0 $break|0 - end - local.get $0 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - f64.const 3.141592653589793 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - f64.const -3.141592653589793 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - end - block $folding-inner0 - local.get $8 - i32.const 2147483647 - i32.and - local.tee $8 + i32.const 1 + local.set $2 local.get $6 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $8 - i32.const 2146435072 - i32.eq - if - local.get $9 - i32.const 2146435072 - i32.eq + if (result f64) + local.get $0 + f64.const 1.5707963267341256 + f64.add + local.set $0 + i32.const -1 + local.set $2 + local.get $7 + i32.const 1073291771 + i32.ne if (result f64) - f64.const 2.356194490192345 - f64.const 0.7853981633974483 - local.get $4 - i32.const 2 - i32.and - select - local.tee $10 - f64.neg - local.get $10 - local.get $4 - i32.const 1 - i32.and - select + local.get $0 + local.get $0 + f64.const 6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const 6.077100506506192e-11 + f64.add else - f64.const 3.141592653589793 - f64.const 0 - local.get $4 - i32.const 2 - i32.and - select - local.tee $10 - f64.neg - local.get $10 - local.get $4 - i32.const 1 - i32.and - select + local.get $0 + f64.const 6.077100506303966e-11 + f64.add + local.tee $1 + f64.const 2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const 2.0222662487959506e-21 + f64.add + end + else + local.get $0 + f64.const -1.5707963267341256 + f64.add + local.set $0 + local.get $7 + i32.const 1073291771 + i32.ne + if (result f64) + local.get $0 + local.get $0 + f64.const -6.077100506506192e-11 + f64.add + local.tee $0 + f64.sub + f64.const -6.077100506506192e-11 + f64.add + else + local.get $0 + f64.const -6.077100506303966e-11 + f64.add + local.tee $1 + f64.const -2.0222662487959506e-21 + f64.add + local.set $0 + local.get $1 + local.get $0 + f64.sub + f64.const -2.0222662487959506e-21 + f64.add end - br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $9 - i32.const 2146435072 - i32.eq - local.get $8 - i32.const 67108864 - i32.add - local.get $9 - i32.lt_u - i32.or - br_if $folding-inner0 - local.get $9 - i32.const 67108864 - i32.add - local.get $8 - i32.lt_u - i32.const 0 + local.get $0 + global.set $~lib/math/rempio2_y0 + global.set $~lib/math/rempio2_y1 + br $~lib/math/rempio2|inlined.2 + end + local.get $7 + i32.const 1094263291 + i32.lt_u + if + local.get $7 + i32.const 20 + i32.shr_u + local.tee $2 + local.get $0 + local.get $0 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.tee $4 + f64.const 1.5707963267341256 + f64.mul + f64.sub + local.tee $0 local.get $4 - i32.const 2 + f64.const 6.077100506506192e-11 + f64.mul + local.tee $5 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 i32.and - select - if (result f64) - f64.const 0 - else + i32.sub + i32.const 16 + i32.gt_u + if + local.get $4 + f64.const 2.0222662487959506e-21 + f64.mul + local.get $0 local.get $0 + local.get $4 + f64.const 6.077100506303966e-11 + f64.mul + local.tee $1 + f64.sub + local.tee $0 + f64.sub local.get $1 - f64.div - f64.abs - call $~lib/math/NativeMath.atan - end - local.set $10 - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 - end - local.get $10 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - local.get $10 - f64.neg - br $__inlined_func$~lib/math/NativeMath.atan2 - end - f64.const 3.141592653589793 - local.get $10 - f64.const -1.2246467991473532e-16 - f64.add + f64.sub + f64.sub + local.set $5 + local.get $2 + local.get $0 + local.get $5 + f64.sub + local.tee $1 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + i32.sub + i32.const 49 + i32.gt_u + if + local.get $4 + f64.const 8.4784276603689e-32 + f64.mul + local.get $0 + local.get $0 + local.get $4 + f64.const 2.0222662487111665e-21 + f64.mul + local.tee $1 f64.sub - br $__inlined_func$~lib/math/NativeMath.atan2 + local.tee $0 + f64.sub + local.get $1 + f64.sub + f64.sub + local.set $5 + local.get $0 + local.get $5 + f64.sub + local.set $1 end - local.get $10 - f64.const -1.2246467991473532e-16 - f64.add - f64.const -3.141592653589793 - f64.add - br $__inlined_func$~lib/math/NativeMath.atan2 end - unreachable + local.get $1 + global.set $~lib/math/rempio2_y0 + local.get $0 + local.get $1 + f64.sub + local.get $5 + f64.sub + global.set $~lib/math/rempio2_y1 + local.get $4 + i32.trunc_sat_f64_s + local.set $2 + br $~lib/math/rempio2|inlined.2 end - f64.const -1.5707963267948966 - f64.const 1.5707963267948966 - local.get $4 - i32.const 1 - i32.and + i32.const 0 + local.get $3 + call $~lib/math/pio2_large_quot + local.tee $2 + i32.sub + local.get $2 + local.get $6 select + local.set $2 end + global.get $~lib/math/rempio2_y0 + global.get $~lib/math/rempio2_y1 + i32.const 1 local.get $2 - local.get $3 + i32.const 1 + i32.and + i32.const 1 + i32.shl + i32.sub + call $~lib/math/tan_kern + ) + (func $std/math/test_min (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + local.get $0 + local.get $1 + f64.min + local.get $2 + f64.const 0 call $std/math/check if (result i32) local.get $0 local.get $1 - call $~lib/bindings/dom/Math.atan2 + call $~lib/bindings/dom/Math.min local.get $2 - local.get $3 + f64.const 0 call $std/math/check else i32.const 0 end ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 + (func $std/math/test_max (param $0 f64) (param $1 f64) (param $2 f64) (result i32) local.get $0 - f32.ne - local.get $1 - local.get $1 - f32.ne - i32.or - if - local.get $1 - local.get $0 - f32.add - return - end local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 1065353216 - i32.eq - if + f64.max + local.get $2 + f64.const 0 + call $std/math/check + if (result i32) local.get $0 - call $~lib/math/NativeMathf.atan - return + local.get $1 + call $~lib/bindings/dom/Math.max + local.get $2 + f64.const 0 + call $std/math/check + else + i32.const 0 end - local.get $3 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and + ) + (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 f64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) local.get $0 i32.reinterpret_f32 - local.tee $4 + local.tee $3 i32.const 31 i32.shr_u - i32.or - local.set $2 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $2 - br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 - end - local.get $0 - return - end - f32.const 3.1415927410125732 - return - end - f32.const -3.1415927410125732 - return - end - end + local.set $6 block $folding-inner0 local.get $3 i32.const 2147483647 i32.and local.tee $3 - i32.eqz - br_if $folding-inner0 - local.get $3 - i32.const 2139095040 - i32.eq + i32.const 1061752794 + i32.le_u if - local.get $4 - i32.const 2139095040 - i32.eq - if (result f32) - f32.const 2.356194496154785 - f32.const 0.7853981852531433 - local.get $2 - i32.const 2 - i32.and - select - local.tee $0 - f32.neg - local.get $0 - local.get $2 - i32.const 1 - i32.and - select - else - f32.const 3.1415927410125732 - f32.const 0 - local.get $2 - i32.const 2 - i32.and - select - local.tee $0 - f32.neg - local.get $0 - local.get $2 - i32.const 1 - i32.and - select - end - return - end - local.get $4 - i32.const 2139095040 - i32.eq - local.get $3 - i32.const 218103808 - i32.add - local.get $4 - i32.lt_u - i32.or - br_if $folding-inner0 - local.get $4 - i32.const 218103808 - i32.add - local.get $3 - i32.lt_u - i32.const 0 - local.get $2 - i32.const 2 - i32.and - select - if (result f32) - f32.const 0 - else - local.get $0 - local.get $1 - f32.div - f32.abs - call $~lib/math/NativeMathf.atan - end - local.set $0 - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $2 - br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 - end - local.get $0 - return - end - local.get $0 - f32.neg - return - end - f32.const 3.1415927410125732 + local.get $3 + i32.const 964689920 + i32.lt_u + if local.get $0 - f32.const 8.742277657347586e-08 - f32.add - f32.sub return end local.get $0 - f32.const 8.742277657347586e-08 - f32.add - f32.const -3.1415927410125732 - f32.add - return + f64.promote_f32 + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 end - unreachable - end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $2 - i32.const 1 - i32.and - select - ) - (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 f64) - local.get $0 - local.get $0 - f64.add - local.set $3 - block $__inlined_func$~lib/math/NativeMath.cbrt$18 - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 2146435072 - i32.ge_u - br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 - local.get $4 - i32.const 1048576 - i32.lt_u - if (result i32) + local.get $3 + i32.const 1081824209 + i32.le_u + if + local.get $3 + i32.const 1075235811 + i32.le_u + if + local.get $6 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + else + local.get $0 + f64.promote_f32 + f64.const -1.5707963267948966 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + end + return + end local.get $0 - local.tee $3 - f64.const 18014398509481984 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $6 + select + f64.neg + local.tee $2 + local.get $2 f64.mul - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.eqz - br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 - local.get $4 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add - else - local.get $4 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 end - local.set $4 - local.get $5 - i64.const -9223372036854775808 - i64.and - local.get $4 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $6 - local.get $0 - local.get $3 - local.get $6 - local.get $6 - f64.const 1.6214297201053545 - f64.mul - f64.const -1.8849797954337717 - f64.add - f64.mul - f64.const 1.87595182427177 - f64.add - local.get $6 - local.get $6 - f64.mul - local.get $6 - f64.mul - local.get $6 - f64.const 0.14599619288661245 - f64.mul - f64.const -0.758397934778766 - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - f64.div - local.set $6 - local.get $3 - local.get $3 - local.get $6 - local.get $3 - f64.sub local.get $3 + i32.const 1088565717 + i32.le_u + if + local.get $3 + i32.const 1085271519 + i32.le_u + if + local.get $6 + if (result f32) + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const -4.71238898038469 + f64.add + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + end + return + end + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + local.set $4 + br $folding-inner0 + end local.get $3 - f64.add - local.get $6 - f64.add - f64.div - f64.mul - f64.add - local.set $3 - end - local.get $3 - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/dom/Math.cbrt - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 f64) - block $__inlined_func$~lib/math/NativeMathf.cbrt$19 (result f32) - local.get $0 - local.get $0 - f32.add - local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 - i32.and - local.tee $6 i32.const 2139095040 i32.ge_u - br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 - drop - local.get $6 - i32.const 8388608 - i32.lt_u - if (result i32) + if local.get $0 - local.get $6 - i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 - drop local.get $0 - f32.const 16777216 - f32.mul - i32.reinterpret_f32 - local.tee $4 - i32.const 2147483647 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.1 (result i32) + local.get $3 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.1 + end + local.get $3 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s i32.const 3 - i32.div_u - i32.const 642849266 + i32.shl + i32.const 5632 i32.add - else + local.tee $7 + i64.load offset=8 + local.set $5 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $5 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $5 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $5 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 2 + i64.shl + local.tee $8 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $5 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $3 + i32.sub + local.get $3 local.get $6 - i32.const 3 - i32.div_u - i32.const 709958130 - i32.add + select end - local.get $4 - i32.const -2147483648 - i32.and - i32.or - f32.reinterpret_i32 - f64.promote_f32 - local.tee $3 - local.get $3 - f64.mul - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $0 - f64.promote_f32 - local.tee $5 - local.get $5 - f64.add - local.tee $3 - local.get $7 - f64.add - f64.mul - local.get $5 - local.get $7 - f64.add - local.get $7 - f64.add - f64.div - local.tee $7 - local.get $7 - f64.mul - local.get $7 - f64.mul - local.set $8 - local.get $7 + local.set $3 + global.get $~lib/math/rempio2f_y + local.set $1 local.get $3 - local.get $8 - f64.add - f64.mul - local.get $5 - local.get $8 - f64.add - local.get $8 - f64.add - f64.div - f32.demote_f64 + i32.const 1 + i32.and + if (result f32) + local.get $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $1 + local.get $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $1 + local.get $2 + local.get $2 + f64.mul + f64.mul + local.get $2 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + end + local.tee $0 + f32.neg + local.get $0 + local.get $3 + i32.const 2 + i32.and + select + return end - local.get $1 local.get $2 - call $std/math/check + local.get $4 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $4 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 ) - (func $~lib/math/pio2_large_quot (param $0 i64) (result i32) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 f64) - (local $6 i64) - (local $7 i64) + (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 f64) + (local $7 i32) (local $8 i64) (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 i64) local.get $0 - i64.const 9223372036854775807 - i64.and - i64.const 52 - i64.shr_u - i64.const 1045 - i64.sub - local.tee $1 - i64.const 63 - i64.and - local.set $6 - local.get $1 - i64.const 6 - i64.shr_s - i32.wrap_i64 - i32.const 3 - i32.shl - i32.const 5440 - i32.add - local.tee $4 - i64.load - local.set $3 - local.get $4 - i64.load offset=8 - local.set $2 - local.get $4 - i64.load offset=16 - local.set $1 - local.get $6 - i64.const 0 - i64.ne - if + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.set $5 + block $folding-inner0 local.get $3 - local.get $6 - i64.shl - local.get $2 - i64.const 64 - local.get $6 - i64.sub - local.tee $7 - i64.shr_u - i64.or + i32.const 2147483647 + i32.and + local.tee $3 + i32.const 1061752794 + i32.le_u + if + local.get $3 + i32.const 964689920 + i32.lt_u + if + f32.const 1 + return + end + local.get $0 + f64.promote_f32 + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + br $folding-inner0 + end + local.get $3 + i32.const 1081824209 + i32.le_u + if + local.get $3 + i32.const 1075235811 + i32.gt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $5 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + f32.neg + return + else + local.get $5 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + else + f64.const 1.5707963267948966 + local.get $0 + f64.promote_f32 + f64.sub + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + end + local.set $6 + local.get $2 + local.get $6 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $6 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + unreachable + end + local.get $3 + i32.const 1088565717 + i32.le_u + if + local.get $3 + i32.const 1085271519 + i32.gt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $5 + select + local.tee $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + br $folding-inner0 + else + local.get $5 + if (result f64) + local.get $0 + f32.neg + f64.promote_f32 + f64.const -4.71238898038469 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + else + local.get $0 + f64.promote_f32 + f64.const -4.71238898038469 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $2 + f64.mul + end + local.set $6 + local.get $2 + local.get $6 + local.get $1 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $6 + local.get $1 + local.get $1 + f64.mul + f64.mul + local.get $1 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + unreachable + end + local.get $3 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.0 (result i32) + local.get $3 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.0 + end + local.get $3 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $4 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $4 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $4 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $4 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $4 + i64.const 2 + i64.shl + local.tee $8 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $4 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $3 + i32.sub + local.get $3 + local.get $5 + select + end local.set $3 - local.get $2 - local.get $6 - i64.shl - local.get $1 - local.get $7 - i64.shr_u - i64.or - local.set $2 - local.get $1 - local.get $6 - i64.shl - local.get $4 - i64.load offset=24 - local.get $7 - i64.shr_u - i64.or + global.get $~lib/math/rempio2f_y local.set $1 + local.get $3 + i32.const 1 + i32.and + if (result f32) + local.get $1 + local.get $1 + local.get $1 + f64.mul + local.tee $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.008333329385889463 + f64.mul + f64.const -0.16666666641626524 + f64.add + f64.mul + f64.add + local.get $1 + local.get $2 + local.get $2 + f64.mul + f64.mul + local.get $2 + f64.const 2.718311493989822e-06 + f64.mul + f64.const -1.9839334836096632e-04 + f64.add + f64.mul + f64.add + f32.demote_f64 + else + local.get $1 + local.get $1 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $2 + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add + local.get $2 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $2 + local.get $1 + f64.mul + local.get $1 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + end + local.tee $0 + f32.neg + local.get $0 + local.get $3 + i32.const 1 + i32.add + i32.const 2 + i32.and + select + return end - local.get $0 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.tee $6 - i64.const 4294967295 - i64.and - local.set $7 - local.get $2 - i64.const 4294967295 - i64.and - local.tee $8 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $9 - i64.mul + local.get $1 + f64.const -0.499999997251031 + f64.mul + f64.const 1 + f64.add local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - local.get $7 - i64.mul - local.get $7 - local.get $8 - i64.mul - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.tee $8 - i64.const 4294967295 - i64.and - i64.add - local.set $10 + f64.const 0.04166662332373906 + f64.mul + f64.add local.get $2 - local.get $9 - i64.mul - local.get $8 - i64.const 32 - i64.shr_u - i64.add - local.get $10 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $9 local.get $1 - i64.const 32 - i64.shr_u - i64.mul - local.tee $1 - local.get $7 - i64.const 4294967295 - i64.and - local.get $10 - i64.const 32 - i64.shl - i64.add - i64.add - local.tee $2 + f64.mul local.get $1 - i64.lt_u - i64.extend_i32_u - global.get $~lib/math/res128_hi - local.get $3 - local.get $6 - i64.mul - i64.add - i64.add - local.tee $3 - i64.const 2 - i64.shl - local.get $2 - i64.const 62 - i64.shr_u - i64.or - local.tee $6 - i64.const 63 - i64.shr_s - local.tee $7 + f64.const 2.439044879627741e-05 + f64.mul + f64.const -0.001388676377460993 + f64.add + f64.mul + f64.add + f32.demote_f64 + ) + (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) + (local $1 f64) + (local $2 f64) + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u + local.set $6 + block $folding-inner1 + block $folding-inner0 + local.get $4 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 1061752794 + i32.le_u + if + local.get $4 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end + local.get $0 + f64.promote_f32 + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + local.get $4 + i32.const 1081824209 + i32.le_u + if + local.get $4 + i32.const 1075235811 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 1.5707963267948966 + f64.add + local.get $1 + f64.const -1.5707963267948966 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 3.141592653589793 + f64.add + local.get $1 + f64.const -3.141592653589793 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + unreachable + end + local.get $4 + i32.const 1088565717 + i32.le_u + if + local.get $4 + i32.const 1085271519 + i32.le_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 4.71238898038469 + f64.add + local.get $1 + f64.const -4.71238898038469 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner1 + else + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 6.283185307179586 + f64.add + local.get $1 + f64.const -6.283185307179586 + f64.add + local.get $6 + select + local.tee $2 + local.get $2 + f64.mul + local.tee $1 + local.get $1 + f64.mul + local.set $3 + br $folding-inner0 + end + unreachable + end + local.get $4 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + local.get $0 + f32.sub + return + end + block $~lib/math/rempio2f|inlined.2 (result i32) + local.get $4 + i32.const 1305022427 + i32.lt_u + if + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0.6366197723675814 + f64.mul + f64.nearest + local.set $2 + local.get $1 + local.get $2 + f64.const 1.5707963109016418 + f64.mul + f64.sub + local.get $2 + f64.const 1.5893254773528196e-08 + f64.mul + f64.sub + global.set $~lib/math/rempio2f_y + local.get $2 + i32.trunc_sat_f64_s + br $~lib/math/rempio2f|inlined.2 + end + local.get $4 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.tee $7 + i32.const 63 + i32.and + i64.extend_i32_s + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $5 + f64.const 8.515303950216386e-20 + local.get $0 + f64.promote_f32 + f64.copysign + local.get $4 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.tee $9 + local.get $7 + i64.load + local.get $8 + i64.shl + local.get $5 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + i64.mul + local.get $8 + i64.const 32 + i64.gt_u + if (result i64) + local.get $5 + local.get $8 + i64.const 32 + i64.sub + i64.shl + local.get $7 + i64.load offset=16 + i64.const 96 + local.get $8 + i64.sub + i64.shr_u + i64.or + else + local.get $5 + i64.const 32 + local.get $8 + i64.sub + i64.shr_u + end + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 2 + i64.shl + local.tee $8 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + i32.const 0 + local.get $5 + i64.const 62 + i64.shr_u + local.get $8 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.tee $4 + i32.sub + local.get $4 + local.get $6 + select + end + local.set $4 + global.get $~lib/math/rempio2f_y + local.tee $1 + local.get $1 + f64.mul + local.tee $2 + local.get $2 + f64.mul + local.set $3 + f64.const -1 + local.get $1 + local.get $2 + local.get $1 + f64.mul + local.tee $1 + local.get $2 + f64.const 0.13339200271297674 + f64.mul + f64.const 0.3333313950307914 + f64.add + f64.mul + f64.add + local.get $1 + local.get $3 + f64.mul + local.get $2 + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 + local.get $2 + f64.const 0.009465647849436732 + f64.mul + f64.const 0.002974357433599673 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $1 + f64.div + local.get $1 + local.get $4 + i32.const 1 + i32.and + select + f32.demote_f64 + return + end + local.get $2 + local.get $1 + local.get $2 + f64.mul + local.tee $2 + local.get $1 + f64.const 0.13339200271297674 + f64.mul + f64.const 0.3333313950307914 + f64.add + f64.mul + f64.add + local.get $2 + local.get $3 + f64.mul + local.get $1 + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 + local.get $1 + f64.const 0.009465647849436732 + f64.mul + f64.const 0.002974357433599673 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f32.demote_f64 + return + end + f64.const -1 local.get $2 - i64.const 2 - i64.shl - i64.xor - local.set $2 - local.get $6 - local.get $7 - i64.const 1 - i64.shr_s - i64.xor - local.tee $1 - i64.clz - local.set $8 local.get $1 - local.get $8 - i64.shl local.get $2 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - local.tee $9 - i64.const 4294967295 - i64.and - local.set $1 - local.get $9 - i64.const 32 - i64.shr_u - local.tee $10 - i64.const 560513588 - i64.mul - local.get $1 - i64.const 3373259426 - i64.mul - local.get $1 - i64.const 560513588 - i64.mul - local.tee $11 - i64.const 32 - i64.shr_u - i64.add - local.tee $12 - i64.const 4294967295 - i64.and - i64.add - local.set $1 - local.get $10 - i64.const 3373259426 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add + f64.mul + local.tee $2 local.get $1 - i64.const 32 - i64.shr_u - i64.add - global.set $~lib/math/res128_hi - local.get $9 - f64.convert_i64_u - f64.const 3.753184150245214e-04 + f64.const 0.13339200271297674 f64.mul - local.get $2 - local.get $8 - i64.shl - f64.convert_i64_u - f64.const 3.834951969714103e-04 + f64.const 0.3333313950307914 + f64.add f64.mul f64.add - i64.trunc_sat_f64_u - local.tee $2 - local.get $11 - i64.const 4294967295 - i64.and + local.get $2 + local.get $3 + f64.mul local.get $1 - i64.const 32 - i64.shl - i64.add - local.tee $1 - i64.gt_u - i64.extend_i32_u - global.get $~lib/math/res128_hi - local.tee $9 - i64.const 11 - i64.shr_u - i64.add - f64.convert_i64_u - global.set $~lib/math/rempio2_y0 - local.get $9 - i64.const 53 - i64.shl + f64.const 0.024528318116654728 + f64.mul + f64.const 0.05338123784456704 + f64.add + local.get $3 local.get $1 - i64.const 11 - i64.shr_u - i64.or - local.get $2 - i64.add - f64.convert_i64_u - f64.const 5.421010862427522e-20 + f64.const 0.009465647849436732 f64.mul - global.set $~lib/math/rempio2_y1 - global.get $~lib/math/rempio2_y0 - i64.const 4372995238176751616 - local.get $8 - i64.const 52 - i64.shl - i64.sub - local.get $0 - local.get $6 - i64.xor - i64.const -9223372036854775808 - i64.and - i64.or - f64.reinterpret_i64 - local.tee $5 + f64.const 0.002974357433599673 + f64.add f64.mul - global.set $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - local.get $5 + f64.add f64.mul - global.set $~lib/math/rempio2_y1 - local.get $3 - i64.const 62 - i64.shr_s - local.get $7 - i64.sub - i32.wrap_i64 + f64.add + f64.div + f32.demote_f64 ) - (func $~lib/math/NativeMath.cos (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) + (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 f64) + (local $4 f64) + (local $5 i32) + (local $6 i64) (local $7 f64) (local $8 f64) - (local $9 f64) - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $6 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1072243195 - i32.le_u - if - local.get $3 - i32.const 1044816030 - i32.lt_u + block $~lib/util/math/exp_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $1 + i32.const 969 + i32.sub + local.tee $5 + i32.const 63 + i32.ge_u if f64.const 1 - return + local.get $5 + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp_lut|inlined.0 + drop + local.get $1 + i32.const 1033 + i32.ge_u + if + f64.const 0 + local.get $2 + i64.const -4503599627370496 + i64.eq + br_if $~lib/util/math/exp_lut|inlined.0 + drop + local.get $0 + f64.const 1 + f64.add + local.get $1 + i32.const 2047 + i32.ge_u + br_if $~lib/util/math/exp_lut|inlined.0 + drop + f64.const 0 + f64.const inf + local.get $2 + i64.const 0 + i64.lt_s + select + br $~lib/util/math/exp_lut|inlined.0 + end + i32.const 0 + local.set $1 end local.get $0 - local.get $0 - f64.mul - local.tee $1 - local.get $1 + f64.const 184.6649652337873 f64.mul + f64.const 6755399441055744 + f64.add + local.tee $3 + i64.reinterpret_f64 + local.tee $6 + i64.const 127 + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5664 + i32.add + local.tee $5 + i64.load offset=8 + local.get $6 + i64.const 45 + i64.shl + i64.add local.set $2 - f64.const 1 - local.get $1 - f64.const 0.5 - f64.mul - local.tee $7 - f64.sub - local.tee $8 - f64.const 1 - local.get $8 - f64.sub - local.get $7 - f64.sub - local.get $1 - local.get $1 - local.get $1 - local.get $1 - f64.const 2.480158728947673e-05 - f64.mul - f64.const -0.001388888888887411 + local.get $0 + local.get $3 + f64.const -6755399441055744 f64.add + local.tee $0 + f64.const -0.005415212348111709 f64.mul - f64.const 0.0416666666666666 f64.add + local.get $0 + f64.const -1.2864023111638346e-14 f64.mul - local.get $2 - local.get $2 - f64.mul - local.get $1 - local.get $1 - f64.const -1.1359647557788195e-11 + f64.add + local.tee $0 + local.get $0 f64.mul - f64.const 2.087572321298175e-09 + local.set $3 + local.get $5 + f64.load + local.get $0 f64.add + local.get $3 + local.get $0 + f64.const 0.16666666666665886 f64.mul - f64.const -2.7557314351390663e-07 + f64.const 0.49999999999996786 f64.add f64.mul f64.add + local.get $3 + local.get $3 f64.mul local.get $0 - f64.const 0 + f64.const 0.008333335853059549 f64.mul - f64.sub + f64.const 0.0416666808410674 f64.add + f64.mul f64.add - return - end - local.get $3 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.0 (result i32) - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1073928572 - i32.lt_u + local.set $0 + local.get $1 + i32.eqz if - i32.const 1 - local.set $3 - local.get $6 - if (result f64) - local.get $0 - f64.const 1.5707963267341256 - f64.add - local.set $0 - i32.const -1 - local.set $3 - local.get $4 - i32.const 1073291771 - i32.ne - if (result f64) - local.get $0 - local.get $0 - f64.const 6.077100506506192e-11 - f64.add - local.tee $0 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - else - local.get $0 - f64.const 6.077100506303966e-11 - f64.add - local.tee $1 - f64.const 2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 + block $~lib/util/math/specialcase|inlined.0 (result f64) + local.get $6 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $2 + i64.const 4544132024016830464 + i64.sub + f64.reinterpret_i64 + local.tee $3 + local.get $3 local.get $0 - f64.sub - f64.const 2.0222662487959506e-21 + f64.mul f64.add + f64.const 5486124068793688683255936e279 + f64.mul + br $~lib/util/math/specialcase|inlined.0 end - else + local.get $2 + i64.const 4602678819172646912 + i64.add + local.tee $2 + f64.reinterpret_i64 + local.tee $3 local.get $0 - f64.const -1.5707963267341256 + f64.mul + local.set $7 + local.get $3 + local.get $7 f64.add - local.set $0 - local.get $4 - i32.const 1073291771 - i32.ne + local.tee $4 + f64.abs + f64.const 1 + f64.lt if (result f64) - local.get $0 - local.get $0 - f64.const -6.077100506506192e-11 + f64.const 1 + local.get $4 + f64.copysign + local.tee $8 + local.get $4 f64.add local.tee $0 + local.get $8 + local.get $0 f64.sub - f64.const -6.077100506506192e-11 + local.get $4 f64.add - else - local.get $0 - f64.const -6.077100506303966e-11 + local.get $3 + local.get $4 + f64.sub + local.get $7 f64.add - local.tee $1 - f64.const -2.0222662487959506e-21 f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const -2.0222662487959506e-21 f64.add + local.get $8 + f64.sub + local.tee $0 + f64.const 0 + f64.eq + if (result f64) + local.get $2 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + else + local.get $0 + end + else + local.get $4 end + f64.const 2.2250738585072014e-308 + f64.mul end + br $~lib/util/math/exp_lut|inlined.0 + end + local.get $2 + f64.reinterpret_i64 + local.tee $3 + local.get $3 + local.get $0 + f64.mul + f64.add + end + ) + (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 i64) + (local $12 i64) + (local $13 f64) + (local $14 f64) + (local $15 f64) + (local $16 f64) + (local $17 f64) + (local $18 i32) + local.get $1 + f64.abs + f64.const 2 + f64.le + if + local.get $1 + f64.const 2 + f64.eq + if + local.get $0 + local.get $0 + f64.mul + return + end + local.get $1 + f64.const 0.5 + f64.eq + if local.get $0 - global.set $~lib/math/rempio2_y0 - global.set $~lib/math/rempio2_y1 - local.get $3 - br $~lib/math/rempio2|inlined.0 + f64.sqrt + f64.abs + f64.const inf + local.get $0 + f64.const -inf + f64.ne + select + return end - local.get $4 - i32.const 1094263291 - i32.lt_u + local.get $1 + f64.const -1 + f64.eq if - local.get $4 - i32.const 20 - i32.shr_u - local.tee $3 + f64.const 1 local.get $0 + f64.div + return + end + local.get $1 + f64.const 1 + f64.eq + if local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $7 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $7 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $2 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u + return + end + local.get $1 + f64.const 0 + f64.eq + if + f64.const 1 + return + end + end + local.get $1 + i64.reinterpret_f64 + local.tee $11 + i64.const 52 + i64.shr_u + local.set $6 + block $~lib/util/math/pow_lut|inlined.0 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + local.tee $5 + i64.const 1 + i64.sub + i64.const 2046 + i64.ge_u + if (result i32) + i32.const 1 + else + local.get $6 + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + end + if + local.get $11 + i64.const 1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + i64.const -9007199254740993 + i64.ge_u if - local.get $7 - f64.const 2.0222662487959506e-21 + f64.const 1 + local.get $12 + i64.eqz + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const nan:0x8000000000000 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + local.get $0 + local.get $1 + f64.add + local.get $12 + i64.const -9007199254740992 + i64.gt_u + local.get $2 + i64.const 1 + i64.shl + local.tee $2 + i64.const -9007199254740992 + i64.gt_u + i32.or + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const nan:0x8000000000000 + local.get $2 + i64.const 9214364837600034816 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 0 + local.get $11 + i64.const 63 + i64.shr_u + i64.eqz + local.get $2 + i64.const 9214364837600034816 + i64.lt_u + i32.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + local.get $1 + local.get $1 f64.mul + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740993 + i64.ge_u + if + f64.const 1 local.get $0 local.get $0 - local.get $7 - f64.const 6.077100506303966e-11 f64.mul - local.tee $1 - f64.sub local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $2 - local.get $3 + f64.neg local.get $0 local.get $2 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 + i64.const 63 i64.shr_u i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u + if (result i32) + block $~lib/util/math/checkint|inlined.0 (result i32) + i32.const 0 + local.get $11 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $2 + i64.const 1023 + i64.lt_u + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 2 + local.get $2 + i64.const 1075 + i64.gt_u + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 0 + local.get $11 + i64.const 1 + i64.const 1075 + local.get $2 + i64.sub + i64.shl + local.tee $2 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 1 + local.get $2 + local.get $11 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.0 + drop + i32.const 2 + end + i32.const 1 + i32.eq + else + i32.const 0 + end + select + local.tee $0 + f64.div + local.get $0 + local.get $11 + i64.const 0 + i64.lt_s + select + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 0 + i64.lt_s + if + block $~lib/util/math/checkint|inlined.1 (result i32) + i32.const 0 + local.get $11 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $12 + i64.const 1023 + i64.lt_u + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 + local.get $12 + i64.const 1075 + i64.gt_u + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 0 + local.get $11 + i64.const 1 + i64.const 1075 + local.get $12 + i64.sub + i64.shl + local.tee $12 + i64.const 1 + i64.sub + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 1 + local.get $11 + local.get $12 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 + end + local.tee $3 + i32.eqz if - local.get $7 - f64.const 8.4784276603689e-32 - f64.mul local.get $0 local.get $0 - local.get $7 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $1 f64.sub local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $2 local.get $0 - local.get $2 - f64.sub - local.set $1 + f64.div + br $~lib/util/math/pow_lut|inlined.0 end + local.get $5 + i64.const 2047 + i64.and + local.set $5 + i32.const 262144 + i32.const 0 + local.get $3 + i32.const 1 + i32.eq + select + local.set $4 + local.get $2 + i64.const 9223372036854775807 + i64.and + local.set $2 + end + local.get $6 + i64.const 2047 + i64.and + local.tee $12 + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + if + f64.const 1 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 1 + local.get $12 + i64.const 958 + i64.lt_u + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const inf + f64.const 0 + local.get $6 + i64.const 2048 + i64.lt_u + local.get $2 + i64.const 4607182418800017408 + i64.gt_u + i32.eq + select + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $5 + i64.eqz + if + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + i64.const 234187180623265792 + i64.sub + local.set $2 end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $2 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $7 - i32.trunc_sat_f64_s - br $~lib/math/rempio2|inlined.0 end - i32.const 0 - local.get $5 - call $~lib/math/pio2_large_quot + local.get $2 + local.get $2 + i64.const 4604531861337669632 + i64.sub + local.tee $2 + i64.const -4503599627370496 + i64.and + i64.sub + local.tee $5 + i64.const 2147483648 + i64.add + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $7 + local.get $2 + i64.const 45 + i64.shr_u + i64.const 127 + i64.and + i32.wrap_i64 + i32.const 5 + i32.shl + i32.const 10272 + i32.add local.tee $3 - i32.sub - local.get $3 - local.get $6 - select - end - local.set $3 - global.get $~lib/math/rempio2_y0 - local.set $1 - global.get $~lib/math/rempio2_y1 - local.set $2 - local.get $3 - i32.const 1 - i32.and - if (result f64) - local.get $1 - local.get $1 - f64.mul - local.tee $0 - local.get $1 + f64.load + local.tee $8 f64.mul - local.set $7 - local.get $1 - local.get $0 + f64.const -1 + f64.add + local.set $9 local.get $2 - f64.const 0.5 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.tee $13 + f64.const 0.6931471805598903 f64.mul + local.get $3 + f64.load offset=16 + f64.add + local.tee $0 + local.get $9 + local.get $5 + f64.reinterpret_i64 local.get $7 - local.get $0 - local.get $0 - f64.const 2.7557313707070068e-06 + f64.sub + local.get $8 f64.mul - f64.const -1.984126982985795e-04 + local.tee $7 f64.add - f64.mul - f64.const 0.00833333333332249 + local.tee $14 f64.add - local.get $0 - local.get $0 - local.get $0 + local.set $15 + local.get $14 + local.get $14 + f64.const -0.5 f64.mul + local.tee $8 f64.mul - local.get $0 - f64.const 1.58969099521155e-10 + local.set $16 + local.get $15 + local.get $9 + local.get $9 + f64.const -0.5 f64.mul - f64.const -2.5050760253406863e-08 - f64.add + local.tee $17 f64.mul + local.tee $9 f64.add + local.tee $10 + local.get $10 + local.get $13 + f64.const 5.497923018708371e-14 f64.mul - f64.sub - f64.mul - local.get $2 - f64.sub - local.get $7 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - else - local.get $1 - local.get $1 - f64.mul - local.tee $7 - local.get $7 - f64.mul - local.set $8 - f64.const 1 - local.get $7 - f64.const 0.5 - f64.mul - local.tee $0 - f64.sub - local.tee $9 - f64.const 1 - local.get $9 - f64.sub + local.get $3 + f64.load offset=24 + f64.add local.get $0 + local.get $15 f64.sub + local.get $14 + f64.add + f64.add local.get $7 - local.get $7 - local.get $7 - local.get $7 - f64.const 2.480158728947673e-05 + local.get $8 + local.get $17 + f64.add f64.mul - f64.const -0.001388888888887411 f64.add + local.get $15 + local.get $10 + f64.sub + local.get $9 + f64.add + f64.add + local.get $14 + local.get $16 f64.mul - f64.const 0.0416666666666666 + local.get $14 + f64.const 0.5000000000000007 + f64.mul + f64.const -0.6666666666666679 f64.add + local.get $16 + local.get $14 + f64.const -0.6666666663487739 f64.mul - local.get $8 - local.get $8 + f64.const 0.7999999995323976 + f64.add + local.get $16 + local.get $14 + f64.const 1.0000415263675542 f64.mul - local.get $7 - local.get $7 - f64.const -1.1359647557788195e-11 + f64.const -1.142909628459501 + f64.add f64.mul - f64.const 2.087572321298175e-09 f64.add f64.mul - f64.const -2.7557314351390663e-07 f64.add f64.mul f64.add + local.tee $0 + f64.add + local.tee $7 + f64.sub + local.get $0 + f64.add + global.set $~lib/util/math/log_tail + local.get $11 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $7 + i64.reinterpret_f64 + i64.const -134217728 + i64.and + f64.reinterpret_i64 + local.tee $8 f64.mul + local.set $9 local.get $1 - local.get $2 + local.get $0 + f64.sub + local.get $8 f64.mul + local.get $1 + local.get $7 + local.get $8 f64.sub + global.get $~lib/util/math/log_tail f64.add + f64.mul f64.add - end - local.tee $0 - f64.neg - local.get $0 - local.get $3 - i32.const 1 - i32.add - i32.const 2 - i32.and - select - ) - (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 f64) - (local $7 i32) - (local $8 i64) - (local $9 i64) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u - local.set $5 - block $folding-inner0 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1061752794 - i32.le_u - if - local.get $3 - i32.const 964689920 - i32.lt_u - if - f32.const 1 - return - end - local.get $0 - f64.promote_f32 - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - br $folding-inner0 - end - local.get $3 - i32.const 1081824209 - i32.le_u - if - local.get $3 - i32.const 1075235811 - i32.gt_u + local.set $0 + block $~lib/util/math/exp_inline|inlined.0 (result f64) + local.get $9 + i64.reinterpret_f64 + local.tee $2 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $3 + i32.const 969 + i32.sub + local.tee $18 + i32.const 63 + i32.ge_u if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const -3.141592653589793 - f64.add - local.get $5 - select - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul + f64.const -1 f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - f32.neg - return - else - local.get $5 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - else - f64.const 1.5707963267948966 - local.get $0 - f64.promote_f32 - f64.sub - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - end - local.set $6 - local.get $2 - local.get $6 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $6 - local.get $1 - local.get $1 - f64.mul - f64.mul - local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - unreachable - end - local.get $3 - i32.const 1088565717 - i32.le_u - if - local.get $3 - i32.const 1085271519 - i32.gt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const -6.283185307179586 - f64.add - local.get $5 + local.get $4 + select + local.get $18 + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp_inline|inlined.0 + drop + f64.const -0 + f64.const 0 + local.get $4 + select + f64.const -inf + f64.const inf + local.get $4 select - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - br $folding-inner0 - else - local.get $5 - if (result f64) - local.get $0 - f32.neg - f64.promote_f32 - f64.const -4.71238898038469 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - else - local.get $0 - f64.promote_f32 - f64.const -4.71238898038469 - f64.add - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - end - local.set $6 - local.get $2 - local.get $6 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $6 - local.get $1 - local.get $1 - f64.mul - f64.mul - local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 - f64.add - f64.mul - f64.add - f32.demote_f64 - return - end - unreachable - end - local.get $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $3 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $2 - local.get $1 - local.get $2 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $2 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y local.get $2 - i32.trunc_sat_f64_s - br $~lib/math/rempio2f|inlined.0 + i64.const 0 + i64.lt_s + select + local.get $3 + i32.const 1033 + i32.ge_u + br_if $~lib/util/math/exp_inline|inlined.0 + drop + i32.const 0 + local.set $3 end - local.get $3 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $7 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $8 - local.get $7 - i32.const 6 - i32.shr_s + local.get $9 + f64.const 184.6649652337873 + f64.mul + f64.const 6755399441055744 + f64.add + local.tee $1 + i64.reinterpret_f64 + local.tee $2 + i64.const 127 + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 i32.const 3 i32.shl - i32.const 5632 + i32.const 5664 i32.add - local.tee $7 + local.tee $18 i64.load offset=8 - local.set $4 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - i64.load - local.get $8 - i64.shl + local.get $2 local.get $4 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - i64.const 32 - i64.gt_u - if (result i64) - local.get $4 - local.get $8 - i64.const 32 - i64.sub - i64.shl - local.get $7 - i64.load offset=16 - i64.const 96 - local.get $8 - i64.sub - i64.shr_u - i64.or - else - local.get $4 - i64.const 32 - local.get $8 - i64.sub - i64.shr_u - end - local.get $9 - i64.mul - i64.const 32 - i64.shr_u + i64.extend_i32_u i64.add - local.tee $4 - i64.const 2 + i64.const 45 i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $4 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u i64.add - i32.wrap_i64 - local.tee $3 - i32.sub - local.get $3 - local.get $5 - select - end - local.set $3 - global.get $~lib/math/rempio2f_y - local.set $1 - local.get $3 - i32.const 1 - i32.and - if (result f32) - local.get $1 - local.get $1 + local.set $5 + local.get $9 local.get $1 + f64.const -6755399441055744 + f64.add + local.tee $1 + f64.const -0.005415212348111709 f64.mul - local.tee $2 + f64.add local.get $1 + f64.const -1.2864023111638346e-14 f64.mul - local.tee $1 - local.get $2 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 f64.add + local.get $0 + f64.add + local.tee $0 + local.get $0 f64.mul + local.set $1 + local.get $18 + f64.load + local.get $0 f64.add local.get $1 - local.get $2 - local.get $2 - f64.mul - f64.mul - local.get $2 - f64.const 2.718311493989822e-06 + local.get $0 + f64.const 0.16666666666665886 f64.mul - f64.const -1.9839334836096632e-04 + f64.const 0.49999999999996786 f64.add f64.mul f64.add - f32.demote_f64 - else - local.get $1 local.get $1 - f64.mul - local.tee $1 local.get $1 f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 + local.get $0 + f64.const 0.008333335853059549 f64.mul - f64.const 1 + f64.const 0.0416666808410674 f64.add - local.get $2 - f64.const 0.04166662332373906 f64.mul f64.add - local.get $2 - local.get $1 - f64.mul + local.set $0 + local.get $3 + i32.eqz + if + block $~lib/util/math/specialcase|inlined.1 (result f64) + local.get $2 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $5 + i64.const 4544132024016830464 + i64.sub + f64.reinterpret_i64 + local.tee $1 + local.get $1 + local.get $0 + f64.mul + f64.add + f64.const 5486124068793688683255936e279 + f64.mul + br $~lib/util/math/specialcase|inlined.1 + end + local.get $5 + i64.const 4602678819172646912 + i64.add + local.tee $2 + f64.reinterpret_i64 + local.tee $1 + local.get $0 + f64.mul + local.set $0 + local.get $1 + local.get $0 + f64.add + local.tee $7 + f64.abs + f64.const 1 + f64.lt + if (result f64) + f64.const 1 + local.get $7 + f64.copysign + local.tee $8 + local.get $7 + f64.add + local.tee $9 + local.get $8 + local.get $9 + f64.sub + local.get $7 + f64.add + local.get $1 + local.get $7 + f64.sub + local.get $0 + f64.add + f64.add + f64.add + local.get $8 + f64.sub + local.tee $0 + f64.const 0 + f64.eq + if (result f64) + local.get $2 + i64.const -9223372036854775808 + i64.and + f64.reinterpret_i64 + else + local.get $0 + end + else + local.get $7 + end + f64.const 2.2250738585072014e-308 + f64.mul + end + br $~lib/util/math/exp_inline|inlined.0 + end + local.get $5 + f64.reinterpret_i64 + local.tee $1 local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add + local.get $0 f64.mul f64.add - f32.demote_f64 end - local.tee $0 - f32.neg + end + ) + (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 f64) + block $__inlined_func$~lib/math/NativeMath.atan2 (result f64) + local.get $1 local.get $0 - local.get $3 - i32.const 1 - i32.add + f64.add + local.get $0 + local.get $0 + f64.ne + local.get $1 + local.get $1 + f64.ne + i32.or + br_if $__inlined_func$~lib/math/NativeMath.atan2 + drop + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $9 + local.get $1 + i64.reinterpret_f64 + local.tee $7 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $8 + local.get $7 + i32.wrap_i64 + local.tee $6 + local.get $8 + i32.const 1072693248 + i32.sub + i32.or + i32.eqz + if + local.get $0 + call $~lib/math/NativeMath.atan + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $8 + i32.const 30 + i32.shr_u i32.const 2 i32.and + local.get $9 + i32.const 31 + i32.shr_u + i32.or + local.set $4 + local.get $9 + i32.const 2147483647 + i32.and + local.tee $9 + local.get $5 + i32.wrap_i64 + i32.or + i32.eqz + if + block $break|0 + block $case3|0 + block $case2|0 + block $case0|0 + local.get $4 + br_table $case0|0 $case0|0 $case2|0 $case3|0 $break|0 + end + local.get $0 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const 3.141592653589793 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const -3.141592653589793 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + end + block $folding-inner0 + local.get $8 + i32.const 2147483647 + i32.and + local.tee $8 + local.get $6 + i32.or + i32.eqz + br_if $folding-inner0 + local.get $8 + i32.const 2146435072 + i32.eq + if + local.get $9 + i32.const 2146435072 + i32.eq + if (result f64) + f64.const 2.356194490192345 + f64.const 0.7853981633974483 + local.get $4 + i32.const 2 + i32.and + select + local.tee $10 + f64.neg + local.get $10 + local.get $4 + i32.const 1 + i32.and + select + else + f64.const 3.141592653589793 + f64.const 0 + local.get $4 + i32.const 2 + i32.and + select + local.tee $10 + f64.neg + local.get $10 + local.get $4 + i32.const 1 + i32.and + select + end + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $9 + i32.const 2146435072 + i32.eq + local.get $8 + i32.const 67108864 + i32.add + local.get $9 + i32.lt_u + i32.or + br_if $folding-inner0 + local.get $9 + i32.const 67108864 + i32.add + local.get $8 + i32.lt_u + i32.const 0 + local.get $4 + i32.const 2 + i32.and + select + if (result f64) + f64.const 0 + else + local.get $0 + local.get $1 + f64.div + f64.abs + call $~lib/math/NativeMath.atan + end + local.set $10 + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $4 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 + end + local.get $10 + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $10 + f64.neg + br $__inlined_func$~lib/math/NativeMath.atan2 + end + f64.const 3.141592653589793 + local.get $10 + f64.const -1.2246467991473532e-16 + f64.add + f64.sub + br $__inlined_func$~lib/math/NativeMath.atan2 + end + local.get $10 + f64.const -1.2246467991473532e-16 + f64.add + f64.const -3.141592653589793 + f64.add + br $__inlined_func$~lib/math/NativeMath.atan2 + end + unreachable + end + f64.const -1.5707963267948966 + f64.const 1.5707963267948966 + local.get $4 + i32.const 1 + i32.and select - return end - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 + local.get $3 + call $std/math/check + if (result i32) + local.get $0 + local.get $1 + call $~lib/bindings/dom/Math.atan2 + local.get $2 + local.get $3 + call $std/math/check + else + i32.const 0 + end ) - (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) - (local $1 i32) - (local $2 f64) + (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 f64) - (local $7 f64) - (local $8 f64) local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.set $3 - local.get $5 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $4 - local.get $3 - i32.const 1078159482 - i32.ge_u + local.get $0 + f32.ne + local.get $1 + local.get $1 + f32.ne + i32.or if + local.get $1 local.get $0 + f32.add + return + end + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 1065353216 + i32.eq + if local.get $0 - f64.ne + call $~lib/math/NativeMathf.atan + return + end + local.get $3 + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u + i32.or + local.set $2 + local.get $4 + i32.const 2147483647 + i32.and + local.tee $4 + i32.eqz + if + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $2 + br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 + end + local.get $0 + return + end + f32.const 3.1415927410125732 + return + end + f32.const -3.1415927410125732 + return + end + end + block $folding-inner0 + local.get $3 + i32.const 2147483647 + i32.and + local.tee $3 + i32.eqz + br_if $folding-inner0 + local.get $3 + i32.const 2139095040 + i32.eq if + local.get $4 + i32.const 2139095040 + i32.eq + if (result f32) + f32.const 2.356194496154785 + f32.const 0.7853981852531433 + local.get $2 + i32.const 2 + i32.and + select + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 1 + i32.and + select + else + f32.const 3.1415927410125732 + f32.const 0 + local.get $2 + i32.const 2 + i32.and + select + local.tee $0 + f32.neg + local.get $0 + local.get $2 + i32.const 1 + i32.and + select + end + return + end + local.get $4 + i32.const 2139095040 + i32.eq + local.get $3 + i32.const 218103808 + i32.add + local.get $4 + i32.lt_u + i32.or + br_if $folding-inner0 + local.get $4 + i32.const 218103808 + i32.add + local.get $3 + i32.lt_u + i32.const 0 + local.get $2 + i32.const 2 + i32.and + select + if (result f32) + f32.const 0 + else + local.get $0 + local.get $1 + f32.div + f32.abs + call $~lib/math/NativeMathf.atan + end + local.set $0 + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $2 + br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 + end + local.get $0 + return + end + local.get $0 + f32.neg + return + end + f32.const 3.1415927410125732 + local.get $0 + f32.const 8.742277657347586e-08 + f32.add + f32.sub + return + end local.get $0 + f32.const 8.742277657347586e-08 + f32.add + f32.const -3.1415927410125732 + f32.add return end - local.get $4 - if - f64.const -1 - return - end + unreachable + end + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 + local.get $2 + i32.const 1 + i32.and + select + ) + (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local $8 i64) + (local $9 f64) + (local $10 f64) + block $~lib/util/math/exp2_lut|inlined.0 (result f64) local.get $0 - f64.const 709.782712893384 - f64.gt + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + i32.const 2047 + i32.and + local.tee $3 + i32.const 969 + i32.sub + local.tee $7 + i32.const 63 + i32.ge_u if - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - return + f64.const 1 + local.get $7 + i32.const -2147483648 + i32.ge_u + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + local.get $3 + i32.const 1033 + i32.ge_u + if + f64.const 0 + local.get $4 + i64.const -4503599627370496 + i64.eq + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + local.get $0 + f64.const 1 + f64.add + local.get $3 + i32.const 2047 + i32.ge_u + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + f64.const inf + local.get $4 + i64.const 0 + i64.ge_s + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + f64.const 0 + local.get $4 + i64.const -4570929321408987136 + i64.ge_u + br_if $~lib/util/math/exp2_lut|inlined.0 + drop + end + local.get $3 + i32.const 0 + local.get $4 + i64.const 1 + i64.shl + i64.const -9143996093422370816 + i64.le_u + select + local.set $3 end - end - local.get $3 - i32.const 1071001154 - i32.gt_u - if local.get $0 - i32.const 1 - local.get $4 - i32.const 1 + f64.const 52776558133248 + f64.add + local.tee $5 + i64.reinterpret_f64 + local.tee $8 + i64.const 127 + i64.and + i64.const 1 + i64.shl + i32.wrap_i64 + i32.const 3 i32.shl - i32.sub + i32.const 5664 + i32.add + local.tee $7 + i64.load offset=8 + local.get $8 + i64.const 45 + i64.shl + i64.add + local.set $4 local.get $0 - f64.const 1.4426950408889634 + local.get $5 + f64.const -52776558133248 + f64.add + f64.sub + local.tee $5 + local.get $5 + f64.mul + local.set $6 + local.get $7 + f64.load + local.get $5 + f64.const 0.6931471805599453 f64.mul - f64.const 0.5 - local.get $0 - f64.copysign f64.add - i32.trunc_sat_f64_s - local.get $3 - i32.const 1072734898 - i32.lt_u - select - local.tee $1 - f64.convert_i32_s - local.tee $0 - f64.const 0.6931471803691238 + local.get $6 + local.get $5 + f64.const 0.0555041086686087 f64.mul - f64.sub - local.tee $2 - local.get $2 - local.get $0 - f64.const 1.9082149292705877e-10 + f64.const 0.24022650695909065 + f64.add f64.mul - local.tee $2 - f64.sub - local.tee $0 - f64.sub - local.get $2 - f64.sub - local.set $2 - else + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $5 + f64.const 1.3332074570119598e-03 + f64.mul + f64.const 0.009618131975721055 + f64.add + f64.mul + f64.add + local.set $5 local.get $3 - i32.const 1016070144 - i32.lt_u + i32.eqz if - local.get $0 - return + block $~lib/util/math/specialcase2|inlined.0 (result f64) + local.get $8 + i64.const 2147483648 + i64.and + i64.eqz + if + local.get $4 + i64.const 4503599627370496 + i64.sub + f64.reinterpret_i64 + local.tee $6 + local.get $5 + f64.mul + local.get $6 + f64.add + f64.const 2 + f64.mul + br $~lib/util/math/specialcase2|inlined.0 + end + local.get $4 + i64.const 4602678819172646912 + i64.add + f64.reinterpret_i64 + local.tee $6 + local.get $5 + f64.mul + local.tee $9 + local.get $6 + f64.add + local.tee $10 + f64.const 1 + f64.lt + if (result f64) + local.get $10 + f64.const 1 + f64.add + local.tee $5 + f64.const 1 + local.get $5 + f64.sub + local.get $10 + f64.add + local.get $6 + local.get $10 + f64.sub + local.get $9 + f64.add + f64.add + f64.add + f64.const -1 + f64.add + else + local.get $10 + end + f64.const 2.2250738585072014e-308 + f64.mul + end + br $~lib/util/math/exp2_lut|inlined.0 end - end - local.get $0 - local.get $0 - f64.const 0.5 - f64.mul - local.tee $7 - f64.mul - local.tee $6 - local.get $6 - f64.mul - local.set $8 - f64.const 3 - local.get $6 - f64.const -0.03333333333333313 - f64.mul - f64.const 1 - f64.add - local.get $8 - local.get $6 - f64.const -7.93650757867488e-05 - f64.mul - f64.const 1.5873015872548146e-03 - f64.add - local.get $8 - local.get $6 - f64.const -2.0109921818362437e-07 - f64.mul - f64.const 4.008217827329362e-06 - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $8 - local.get $7 - f64.mul - f64.sub - local.set $7 - local.get $6 - local.get $8 - local.get $7 - f64.sub - f64.const 6 - local.get $0 - local.get $7 - f64.mul - f64.sub - f64.div - f64.mul - local.set $7 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - local.get $7 + local.get $4 + f64.reinterpret_i64 + local.tee $6 + local.get $5 f64.mul local.get $6 - f64.sub - f64.sub - return + f64.add end - local.get $0 - local.get $7 - local.get $2 - f64.sub - f64.mul - local.get $2 - f64.sub - local.get $6 - f64.sub - local.set $2 local.get $1 - i32.const -1 - i32.eq - if + local.get $2 + call $std/math/check + if (result i32) + f64.const 2 local.get $0 + call $~lib/bindings/dom/Math.pow + local.get $1 local.get $2 - f64.sub - f64.const 0.5 - f64.mul - f64.const -0.5 - f64.add - return + call $std/math/check + else + i32.const 0 end + ) + (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + (local $13 f64) local.get $1 - i32.const 1 - i32.eq + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $5 + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.gt_u if - local.get $0 - f64.const -0.25 - f64.lt - if - local.get $2 - local.get $0 - f64.const 0.5 - f64.add - f64.sub - f64.const -2 + local.get $4 + local.get $5 + local.set $4 + local.set $5 + end + local.get $5 + f64.reinterpret_i64 + local.tee $9 + local.set $0 + block $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $5 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $7 + i32.const 2047 + i32.eq + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $4 + f64.reinterpret_i64 + local.tee $1 + local.set $0 + local.get $5 + i64.eqz + local.get $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 + i32.const 2047 + i32.eq + i32.or + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $1 + local.get $9 + f64.add + local.set $0 + local.get $8 + local.get $7 + i32.sub + i32.const 64 + i32.gt_s + br_if $__inlined_func$~lib/math/NativeMath.hypot$23 + f64.const 1 + local.set $0 + local.get $8 + i32.const 1533 + i32.gt_u + if (result f64) + f64.const 5260135901548373507240989e186 + local.set $0 + local.get $1 + f64.const 1.90109156629516e-211 f64.mul - return + local.set $1 + local.get $9 + f64.const 1.90109156629516e-211 + f64.mul + else + local.get $7 + i32.const 573 + i32.lt_u + if (result f64) + f64.const 1.90109156629516e-211 + local.set $0 + local.get $1 + f64.const 5260135901548373507240989e186 + f64.mul + local.set $1 + local.get $9 + f64.const 5260135901548373507240989e186 + f64.mul + else + local.get $9 + end end - local.get $0 - local.get $2 + local.set $11 + local.get $1 + local.get $1 + local.get $1 + f64.const 134217729 + f64.mul + local.tee $9 f64.sub - f64.const 2 + local.get $9 + f64.add + local.tee $9 + f64.sub + local.set $12 + local.get $11 + local.get $11 + local.get $11 + f64.const 134217729 f64.mul - f64.const 1 + local.tee $10 + f64.sub + local.get $10 f64.add - return - end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - local.set $6 - local.get $1 - i32.const 0 - i32.lt_s - local.get $1 - i32.const 56 - i32.gt_s - i32.or - if + local.tee $10 + f64.sub + local.set $13 local.get $0 - local.get $2 + local.get $10 + local.get $10 + f64.mul + local.get $11 + local.get $11 + f64.mul + local.tee $0 + f64.sub + local.get $10 + local.get $10 + f64.add + local.get $13 + f64.add + local.get $13 + f64.mul + f64.add + local.get $9 + local.get $9 + f64.mul + local.get $1 + local.get $1 + f64.mul + local.tee $1 f64.sub - f64.const 1 + local.get $9 + local.get $9 f64.add - local.tee $0 - local.get $0 + local.get $12 f64.add - f64.const 8988465674311579538646525e283 + local.get $12 f64.mul + f64.add + f64.add local.get $0 - local.get $6 - f64.mul + f64.add local.get $1 - i32.const 1024 - i32.eq - select - f64.const -1 f64.add - return + f64.sqrt + f64.mul + local.set $0 end local.get $0 - f64.const 1 - i64.const 1023 + local.get $2 + local.get $3 + call $std/math/check + ) + (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) + local.get $1 + i32.const 1023 + i32.gt_s + if (result f64) + local.get $0 + f64.const 8988465674311579538646525e283 + f64.mul + local.set $0 + local.get $1 + i32.const 1023 + i32.sub + local.tee $1 + i32.const 1023 + i32.gt_s + if (result f64) + i32.const 1023 + local.get $1 + i32.const 1023 + i32.sub + local.tee $1 + local.get $1 + i32.const 1023 + i32.ge_s + select + local.set $1 + local.get $0 + f64.const 8988465674311579538646525e283 + f64.mul + else + local.get $0 + end + else + local.get $1 + i32.const -1022 + i32.lt_s + if (result f64) + local.get $0 + f64.const 2.004168360008973e-292 + f64.mul + local.set $0 + local.get $1 + i32.const 969 + i32.add + local.tee $1 + i32.const -1022 + i32.lt_s + if (result f64) + i32.const -1022 + local.get $1 + i32.const 969 + i32.add + local.tee $1 + local.get $1 + i32.const -1022 + i32.le_s + select + local.set $1 + local.get $0 + f64.const 2.004168360008973e-292 + f64.mul + else + local.get $0 + end + else + local.get $0 + end + end local.get $1 i64.extend_i32_s - i64.sub + i64.const 1023 + i64.add i64.const 52 i64.shl f64.reinterpret_i64 - local.tee $0 - f64.sub - local.get $2 - f64.sub - f64.const 1 - local.get $2 - local.get $0 - f64.add - f64.sub - local.get $1 - i32.const 20 - i32.lt_s - select - f64.add - local.get $6 f64.mul ) - (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) - (local $1 i32) + (func $~lib/math/ipow64 (param $0 i64) (param $1 i64) (result i64) (local $2 i64) - (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 f64) - block $~lib/util/math/exp_lut|inlined.0 (result f64) + i64.const 1 + local.set $2 + local.get $0 + i64.const 2 + i64.eq + if + i64.const 1 + local.get $1 + i64.shl + i64.const 0 + local.get $1 + i64.const 64 + i64.lt_u + select + return + end + local.get $1 + i64.const 0 + i64.le_s + if local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - i32.const 2047 - i32.and - local.tee $1 - i32.const 969 - i32.sub - local.tee $5 - i32.const 63 - i32.ge_u + i64.const -1 + i64.eq if - f64.const 1 - local.get $5 - i32.const -2147483648 - i32.ge_u - br_if $~lib/util/math/exp_lut|inlined.0 - drop + i64.const -1 + i64.const 1 local.get $1 - i32.const 1033 - i32.ge_u - if - f64.const 0 - local.get $2 - i64.const -4503599627370496 - i64.eq - br_if $~lib/util/math/exp_lut|inlined.0 - drop - local.get $0 - f64.const 1 - f64.add - local.get $1 - i32.const 2047 - i32.ge_u - br_if $~lib/util/math/exp_lut|inlined.0 - drop - f64.const 0 - f64.const inf - local.get $2 - i64.const 0 - i64.lt_s - select - br $~lib/util/math/exp_lut|inlined.0 - end - i32.const 0 - local.set $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + return end + local.get $1 + i64.eqz + i64.extend_i32_u local.get $0 - f64.const 184.6649652337873 - f64.mul - f64.const 6755399441055744 - f64.add - local.tee $3 - i64.reinterpret_f64 - local.tee $6 - i64.const 127 - i64.and i64.const 1 - i64.shl - i32.wrap_i64 - i32.const 3 - i32.shl - i32.const 5664 - i32.add - local.tee $5 - i64.load offset=8 - local.get $6 - i64.const 45 - i64.shl - i64.add - local.set $2 - local.get $0 - local.get $3 - f64.const -6755399441055744 - f64.add - local.tee $0 - f64.const -0.005415212348111709 - f64.mul - f64.add - local.get $0 - f64.const -1.2864023111638346e-14 - f64.mul - f64.add - local.tee $0 - local.get $0 - f64.mul - local.set $3 - local.get $5 - f64.load - local.get $0 - f64.add - local.get $3 - local.get $0 - f64.const 0.16666666666665886 - f64.mul - f64.const 0.49999999999996786 - f64.add - f64.mul - f64.add - local.get $3 - local.get $3 - f64.mul - local.get $0 - f64.const 0.008333335853059549 - f64.mul - f64.const 0.0416666808410674 - f64.add - f64.mul - f64.add - local.set $0 + i64.eq + i64.extend_i32_u + i64.or + return + else local.get $1 - i32.eqz + i64.const 1 + i64.eq if - block $~lib/util/math/specialcase|inlined.0 (result f64) - local.get $6 - i64.const 2147483648 - i64.and - i64.eqz + local.get $0 + return + else + local.get $1 + i64.const 2 + i64.eq + if + local.get $0 + local.get $0 + i64.mul + return + else + local.get $1 + i64.const 64 + i64.lt_s if + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 63 + local.get $1 + i64.clz + i32.wrap_i64 + i32.sub + br_table $case5|0 $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i64.const 1 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + end + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + end local.get $2 - i64.const 4544132024016830464 - i64.sub - f64.reinterpret_i64 - local.tee $3 - local.get $3 - local.get $0 - f64.mul - f64.add - f64.const 5486124068793688683255936e279 - f64.mul - br $~lib/util/math/specialcase|inlined.0 + return end - local.get $2 - i64.const 4602678819172646912 - i64.add - local.tee $2 - f64.reinterpret_i64 - local.tee $3 + end + end + end + loop $while-continue|1 + local.get $1 + i64.const 0 + i64.ne + if + local.get $0 + local.get $2 + i64.mul + local.get $2 + local.get $1 + i64.const 1 + i64.and + i32.wrap_i64 + select + local.set $2 + local.get $1 + i64.const 1 + i64.shr_u + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + br $while-continue|1 + end + end + local.get $2 + ) + (func $std/math/test_round (param $0 f64) (param $1 f64) (result i32) + (local $2 f64) + local.get $0 + f64.ceil + local.tee $2 + local.get $2 + f64.const -1 + f64.add + local.get $2 + f64.const -0.5 + f64.add + local.get $0 + f64.le + select + local.get $1 + f64.const 0 + call $std/math/check + ) + (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f64) + local.get $1 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $5 + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $4 + i32.gt_u + if + local.get $4 + local.get $5 + local.set $4 + local.set $5 + end + local.get $4 + f32.reinterpret_i32 + local.set $0 + block $__inlined_func$~lib/math/NativeMathf.hypot$24 (result f32) + local.get $5 + f32.reinterpret_i32 + local.tee $1 + local.get $5 + i32.const 2139095040 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 + drop + local.get $0 + local.get $1 + f32.add + local.get $5 + i32.eqz + local.get $4 + i32.const 2139095040 + i32.ge_u + i32.or + local.get $4 + local.get $5 + i32.sub + i32.const 209715200 + i32.ge_u + i32.or + br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 + drop + local.get $4 + i32.const 1568669696 + i32.ge_u + if (result f32) + local.get $0 + f32.const 8.077935669463161e-28 + f32.mul + local.set $0 + local.get $1 + f32.const 8.077935669463161e-28 + f32.mul + local.set $1 + f32.const 1237940039285380274899124e3 + else + local.get $5 + i32.const 562036736 + i32.lt_u + if (result f32) local.get $0 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.add - local.tee $4 - f64.abs - f64.const 1 - f64.lt - if (result f64) - f64.const 1 - local.get $4 - f64.copysign - local.tee $8 - local.get $4 - f64.add - local.tee $0 - local.get $8 - local.get $0 - f64.sub - local.get $4 - f64.add - local.get $3 - local.get $4 - f64.sub - local.get $7 - f64.add - f64.add - f64.add - local.get $8 - f64.sub - local.tee $0 - f64.const 0 - f64.eq - if (result f64) - local.get $2 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - else - local.get $0 - end - else - local.get $4 - end - f64.const 2.2250738585072014e-308 - f64.mul + f32.const 1237940039285380274899124e3 + f32.mul + local.set $0 + local.get $1 + f32.const 1237940039285380274899124e3 + f32.mul + local.set $1 + f32.const 8.077935669463161e-28 + else + f32.const 1 end - br $~lib/util/math/exp_lut|inlined.0 end - local.get $2 - f64.reinterpret_i64 - local.tee $3 - local.get $3 local.get $0 + f64.promote_f32 + local.tee $7 + local.get $7 + f64.mul + local.get $1 + f64.promote_f32 + local.tee $7 + local.get $7 f64.mul f64.add + f32.demote_f64 + f32.sqrt + f32.mul end + local.get $2 + local.get $3 + call $std/math/check ) - (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) + (local $1 f64) + (local $2 i64) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 f64) - block $__inlined_func$~lib/math/NativeMath.cosh$20 (result f64) + local.get $0 + f64.promote_f32 + local.set $1 + block $~lib/util/math/expf_lut|inlined.0 (result f32) local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - f64.reinterpret_i64 - local.set $5 - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 + i32.reinterpret_f32 local.tee $3 - i32.const 1072049730 - i32.lt_u + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + local.tee $4 + i32.const 1067 + i32.ge_u if - f64.const 1 + f32.const 0 local.get $3 - i32.const 1045430272 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMath.cosh$20 + i32.const -8388608 + i32.eq + br_if $~lib/util/math/expf_lut|inlined.0 + drop + local.get $0 + local.get $0 + f32.add + local.get $4 + i32.const 2040 + i32.ge_u + br_if $~lib/util/math/expf_lut|inlined.0 + drop + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + local.get $0 + f32.const 88.72283172607422 + f32.gt + br_if $~lib/util/math/expf_lut|inlined.0 + drop + f32.const 0 + local.get $0 + f32.const -103.97207641601562 + f32.lt + br_if $~lib/util/math/expf_lut|inlined.0 drop - local.get $5 - call $~lib/math/NativeMath.expm1 - local.tee $5 - local.get $5 - f64.mul - local.get $5 - local.get $5 - f64.add - f64.const 2 - f64.add - f64.div - f64.const 1 - f64.add - br $__inlined_func$~lib/math/NativeMath.cosh$20 - end - local.get $3 - i32.const 1082535490 - i32.lt_u - if - local.get $5 - call $~lib/math/NativeMath.exp - local.tee $5 - f64.const 1 - local.get $5 - f64.div - f64.add - f64.const 0.5 - f64.mul - br $__inlined_func$~lib/math/NativeMath.cosh$20 end + local.get $1 + f64.const 46.16624130844683 + f64.mul + local.tee $1 + f64.const 6755399441055744 + f64.add + local.tee $5 + i64.reinterpret_f64 + local.set $2 + local.get $1 local.get $5 - f64.const -1416.0996898839683 + f64.const -6755399441055744 f64.add - call $~lib/math/NativeMath.exp - f64.const 2247116418577894884661631e283 + f64.sub + local.tee $1 + f64.const 0.021660849396613134 f64.mul - f64.const 2247116418577894884661631e283 + f64.const 1 + f64.add + local.get $1 + f64.const 1.6938359250920212e-06 f64.mul - end - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/dom/Math.cosh + f64.const 2.3459809789509004e-04 + f64.add + local.get $1 local.get $1 + f64.mul + f64.mul + f64.add local.get $2 - call $std/math/check - else - i32.const 0 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $2 + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 + f64.mul + f32.demote_f64 end ) - (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) - (local $1 i32) + (func $std/math/test_roundf (param $0 f32) (param $1 f32) (result i32) (local $2 f32) + local.get $0 + f32.ceil + local.tee $2 + local.get $2 + f32.const -1 + f32.add + local.get $2 + f32.const -0.5 + f32.add + local.get $0 + f32.le + select + local.get $1 + f32.const 0 + call $std/math/check + ) + (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) + (local $1 i32) + (local $2 f64) (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 f32) - (local $7 f32) + (local $4 i32) + (local $5 i64) + (local $6 f64) + (local $7 f64) + (local $8 f64) local.get $0 - i32.reinterpret_f32 + i64.reinterpret_f64 local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 i32.const 2147483647 i32.and local.set $3 local.get $5 - i32.const 31 - i32.shr_u - local.set $5 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.set $4 local.get $3 - i32.const 1100331076 + i32.const 1078159482 i32.ge_u if - local.get $3 - i32.const 2139095040 - i32.gt_u + local.get $0 + local.get $0 + f64.ne if local.get $0 return end - local.get $5 + local.get $4 if - f32.const -1 + f64.const -1 return end - local.get $3 - i32.const 1118925335 - i32.gt_u + local.get $0 + f64.const 709.782712893384 + f64.gt if local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul + f64.const 8988465674311579538646525e283 + f64.mul return end end local.get $3 - i32.const 1051816472 + i32.const 1071001154 i32.gt_u if local.get $0 i32.const 1 - local.get $5 + local.get $4 i32.const 1 i32.shl i32.sub local.get $0 - f32.const 1.4426950216293335 - f32.mul - f32.const 0.5 + f64.const 1.4426950408889634 + f64.mul + f64.const 0.5 local.get $0 - f32.copysign - f32.add - i32.trunc_sat_f32_s + f64.copysign + f64.add + i32.trunc_sat_f64_s local.get $3 - i32.const 1065686418 + i32.const 1072734898 i32.lt_u select local.tee $1 - f32.convert_i32_s + f64.convert_i32_s local.tee $0 - f32.const 0.6931381225585938 - f32.mul - f32.sub + f64.const 0.6931471803691238 + f64.mul + f64.sub local.tee $2 local.get $2 local.get $0 - f32.const 9.05800061445916e-06 - f32.mul + f64.const 1.9082149292705877e-10 + f64.mul local.tee $2 - f32.sub + f64.sub local.tee $0 - f32.sub + f64.sub local.get $2 - f32.sub + f64.sub local.set $2 else local.get $3 - i32.const 855638016 + i32.const 1016070144 i32.lt_u if local.get $0 return end end - f32.const 3 local.get $0 local.get $0 - f32.const 0.5 - f32.mul - local.tee $6 - f32.mul - local.tee $4 - local.get $4 - f32.const 1.5807170420885086e-03 - f32.mul - f32.const -0.03333321213722229 - f32.add - f32.mul - f32.const 1 - f32.add + f64.const 0.5 + f64.mul local.tee $7 + f64.mul + local.tee $6 local.get $6 - f32.mul - f32.sub - local.set $6 - local.get $4 + f64.mul + local.set $8 + f64.const 3 + local.get $6 + f64.const -0.03333333333333313 + f64.mul + f64.const 1 + f64.add + local.get $8 + local.get $6 + f64.const -7.93650757867488e-05 + f64.mul + f64.const 1.5873015872548146e-03 + f64.add + local.get $8 + local.get $6 + f64.const -2.0109921818362437e-07 + f64.mul + f64.const 4.008217827329362e-06 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $8 local.get $7 + f64.mul + f64.sub + local.set $7 local.get $6 - f32.sub - f32.const 6 + local.get $8 + local.get $7 + f64.sub + f64.const 6 local.get $0 - local.get $6 - f32.mul - f32.sub - f32.div - f32.mul - local.set $6 + local.get $7 + f64.mul + f64.sub + f64.div + f64.mul + local.set $7 local.get $1 i32.eqz if local.get $0 local.get $0 + local.get $7 + f64.mul local.get $6 - f32.mul - local.get $4 - f32.sub - f32.sub + f64.sub + f64.sub return end local.get $0 - local.get $6 + local.get $7 local.get $2 - f32.sub - f32.mul + f64.sub + f64.mul local.get $2 - f32.sub - local.get $4 - f32.sub + f64.sub + local.get $6 + f64.sub local.set $2 local.get $1 i32.const -1 @@ -5286,11 +6600,11 @@ if local.get $0 local.get $2 - f32.sub - f32.const 0.5 - f32.mul - f32.const -0.5 - f32.add + f64.sub + f64.const 0.5 + f64.mul + f64.const -0.5 + f64.add return end local.get $1 @@ -5298,34 +6612,35 @@ i32.eq if local.get $0 - f32.const -0.25 - f32.lt + f64.const -0.25 + f64.lt if local.get $2 local.get $0 - f32.const 0.5 - f32.add - f32.sub - f32.const -2 - f32.mul + f64.const 0.5 + f64.add + f64.sub + f64.const -2 + f64.mul return end local.get $0 local.get $2 - f32.sub - f32.const 2 - f32.mul - f32.const 1 - f32.add + f64.sub + f64.const 2 + f64.mul + f64.const 1 + f64.add return end local.get $1 - i32.const 127 - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $4 + i64.extend_i32_s + i64.const 1023 + i64.add + i64.const 52 + i64.shl + f64.reinterpret_i64 + local.set $6 local.get $1 i32.const 0 i32.lt_s @@ -5336,413 +6651,161 @@ if local.get $0 local.get $2 - f32.sub - f32.const 1 - f32.add + f64.sub + f64.const 1 + f64.add local.tee $0 local.get $0 - f32.add - f32.const 1701411834604692317316873e14 - f32.mul + f64.add + f64.const 8988465674311579538646525e283 + f64.mul local.get $0 - local.get $4 - f32.mul + local.get $6 + f64.mul local.get $1 - i32.const 128 + i32.const 1024 i32.eq select - f32.const -1 - f32.add + f64.const -1 + f64.add return end local.get $0 - f32.const 1 - i32.const 127 + f64.const 1 + i64.const 1023 local.get $1 - i32.sub - i32.const 23 - i32.shl - f32.reinterpret_i32 + i64.extend_i32_s + i64.sub + i64.const 52 + i64.shl + f64.reinterpret_i64 local.tee $0 - f32.sub + f64.sub local.get $2 - f32.sub - f32.const 1 + f64.sub + f64.const 1 local.get $2 local.get $0 - f32.add - f32.sub + f64.add + f64.sub local.get $1 i32.const 20 i32.lt_s select - f32.add - local.get $4 - f32.mul + f64.add + local.get $6 + f64.mul ) - (func $~lib/math/NativeMathf.exp (param $0 f32) (result f32) - (local $1 f64) - (local $2 i64) - (local $3 i32) + (func $std/math/test_atanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f32) (local $4 i32) - (local $5 f64) - block $~lib/util/math/expf_lut|inlined.0 (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - local.tee $4 - i32.const 1067 + local.get $0 + f32.abs + local.set $3 + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 1056964608 + i32.lt_u + if (result f32) + local.get $4 + i32.const 796917760 i32.ge_u - if - f32.const 0 + if (result f32) + local.get $3 local.get $3 - i32.const -8388608 - i32.eq - br_if $~lib/util/math/expf_lut|inlined.0 - drop - local.get $0 - local.get $0 f32.add - local.get $4 - i32.const 2040 - i32.ge_u - br_if $~lib/util/math/expf_lut|inlined.0 - drop - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.get $0 - f32.const 88.72283172607422 - f32.gt - br_if $~lib/util/math/expf_lut|inlined.0 - drop - f32.const 0 - local.get $0 - f32.const -103.97207641601562 - f32.lt - br_if $~lib/util/math/expf_lut|inlined.0 - drop - end - local.get $0 - f64.promote_f32 - f64.const 46.16624130844683 - f64.mul - local.tee $1 - f64.const 6755399441055744 - f64.add - local.tee $5 - i64.reinterpret_f64 - local.set $2 - local.get $1 - local.get $5 - f64.const -6755399441055744 - f64.add - f64.sub - local.tee $1 - f64.const 0.021660849396613134 - f64.mul - f64.const 1 - f64.add - local.get $1 - f64.const 1.6938359250920212e-06 - f64.mul - f64.const 2.3459809789509004e-04 - f64.add - local.get $1 - local.get $1 - f64.mul - f64.mul - f64.add - local.get $2 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.const 7712 - i32.add - i64.load - local.get $2 - i64.const 47 - i64.shl - i64.add - f64.reinterpret_i64 - f64.mul - f32.demote_f64 - end - ) - (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - block $__inlined_func$~lib/math/NativeMathf.cosh$21 (result f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - f32.reinterpret_i32 - local.set $0 - local.get $3 - i32.const 1060205079 - i32.lt_u - if + local.get $3 f32.const 1 local.get $3 - i32.const 964689920 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMathf.cosh$21 - drop - local.get $0 - call $~lib/math/NativeMathf.expm1 - local.tee $0 - local.get $0 - f32.mul - local.get $0 - local.get $0 - f32.add - f32.const 2 - f32.add + f32.sub f32.div f32.const 1 f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh$21 - end - local.get $3 - i32.const 1118925335 - i32.lt_u - if - local.get $0 - call $~lib/math/NativeMathf.exp - local.tee $0 - f32.const 0.5 f32.mul + call $~lib/math/NativeMathf.log1p f32.const 0.5 - local.get $0 - f32.div - f32.add - br $__inlined_func$~lib/math/NativeMathf.cosh$21 + f32.mul + else + local.get $3 end - local.get $0 - f32.const -162.88958740234375 - f32.add - call $~lib/math/NativeMathf.exp - f32.const 1661534994731144841129758e11 + else + local.get $3 + f32.const 1 + local.get $3 + f32.sub + f32.div + f32.const 2 f32.mul - f32.const 1661534994731144841129758e11 + call $~lib/math/NativeMathf.log1p + f32.const 0.5 f32.mul end + local.get $0 + f32.copysign local.get $1 local.get $2 call $std/math/check ) - (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) - (local $4 i64) + (func $std/math/test_atanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 f64) (local $5 f64) - (local $6 f64) - (local $7 i32) - (local $8 i64) - (local $9 f64) - (local $10 f64) - block $~lib/util/math/exp2_lut|inlined.0 (result f64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 52 - i64.shr_u - i32.wrap_i64 - i32.const 2047 - i32.and - local.tee $3 - i32.const 969 - i32.sub - local.tee $7 - i32.const 63 - i32.ge_u - if - f64.const 1 - local.get $7 - i32.const -2147483648 - i32.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - local.get $3 - i32.const 1033 - i32.ge_u - if - f64.const 0 - local.get $4 - i64.const -4503599627370496 - i64.eq - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - local.get $0 - f64.const 1 - f64.add - local.get $3 - i32.const 2047 - i32.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - f64.const inf - local.get $4 - i64.const 0 - i64.ge_s - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - f64.const 0 - local.get $4 - i64.const -4570929321408987136 - i64.ge_u - br_if $~lib/util/math/exp2_lut|inlined.0 - drop - end - local.get $3 - i32.const 0 + local.get $0 + f64.abs + local.set $5 + local.get $0 + i64.reinterpret_f64 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $3 + i64.const 1022 + i64.lt_u + if (result f64) + local.get $3 + i64.const 991 + i64.ge_u + if (result f64) + local.get $5 + local.get $5 + f64.add + local.tee $4 local.get $4 - i64.const 1 - i64.shl - i64.const -9143996093422370816 - i64.le_u - select - local.set $3 + local.get $5 + f64.mul + f64.const 1 + local.get $5 + f64.sub + f64.div + f64.add + call $~lib/math/NativeMath.log1p + f64.const 0.5 + f64.mul + else + local.get $5 end - local.get $0 - f64.const 52776558133248 - f64.add - local.tee $5 - i64.reinterpret_f64 - local.tee $8 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - i32.const 3 - i32.shl - i32.const 5664 - i32.add - local.tee $7 - i64.load offset=8 - local.get $8 - i64.const 45 - i64.shl - i64.add - local.set $4 - local.get $0 - local.get $5 - f64.const -52776558133248 - f64.add - f64.sub - local.tee $5 - local.get $5 - f64.mul - local.set $6 - local.get $7 - f64.load - local.get $5 - f64.const 0.6931471805599453 - f64.mul - f64.add - local.get $6 + else local.get $5 - f64.const 0.0555041086686087 - f64.mul - f64.const 0.24022650695909065 - f64.add - f64.mul - f64.add - local.get $6 - local.get $6 - f64.mul + f64.const 1 local.get $5 - f64.const 1.3332074570119598e-03 - f64.mul - f64.const 0.009618131975721055 - f64.add + f64.sub + f64.div + f64.const 2 f64.mul - f64.add - local.set $5 - local.get $3 - i32.eqz - if - block $~lib/util/math/specialcase2|inlined.0 (result f64) - local.get $8 - i64.const 2147483648 - i64.and - i64.eqz - if - local.get $4 - i64.const 4503599627370496 - i64.sub - f64.reinterpret_i64 - local.tee $6 - local.get $5 - f64.mul - local.get $6 - f64.add - f64.const 2 - f64.mul - br $~lib/util/math/specialcase2|inlined.0 - end - local.get $4 - i64.const 4602678819172646912 - i64.add - f64.reinterpret_i64 - local.tee $6 - local.get $5 - f64.mul - local.tee $9 - local.get $6 - f64.add - local.tee $10 - f64.const 1 - f64.lt - if (result f64) - local.get $10 - f64.const 1 - f64.add - local.tee $5 - f64.const 1 - local.get $5 - f64.sub - local.get $10 - f64.add - local.get $6 - local.get $10 - f64.sub - local.get $9 - f64.add - f64.add - f64.add - f64.const -1 - f64.add - else - local.get $10 - end - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp2_lut|inlined.0 - end - local.get $4 - f64.reinterpret_i64 - local.tee $6 - local.get $5 + call $~lib/math/NativeMath.log1p + f64.const 0.5 f64.mul - local.get $6 - f64.add end + local.get $0 + f64.copysign local.get $1 local.get $2 call $std/math/check if (result i32) - f64.const 2 local.get $0 - call $~lib/bindings/dom/Math.pow + call $~lib/bindings/dom/Math.atanh local.get $1 local.get $2 call $std/math/check @@ -5750,842 +6813,720 @@ i32.const 0 end ) - (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f64) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - block $~lib/util/math/exp2f_lut|inlined.0 (result f32) + (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) + (local $1 f32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 f32) + (local $6 f32) + i32.const 1 + local.set $2 + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 31 + i32.shr_u + local.get $4 + i32.const 1054086096 + i32.lt_u + i32.or + if + local.get $4 + i32.const -1082130432 + i32.ge_u + if + local.get $0 + f32.const -1 + f32.eq + if + local.get $0 + f32.const 0 + f32.div + return + end + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.div + return + end + local.get $4 + i32.const 1 + i32.shl + i32.const 1728053248 + i32.lt_u + if + local.get $0 + return + end + local.get $4 + i32.const -1097468391 + i32.le_u + if (result f32) + i32.const 0 + local.set $2 + local.get $0 + else + f32.const 0 + end + local.set $1 + else + local.get $4 + i32.const 2139095040 + i32.ge_u + if + local.get $0 + return + end + end + local.get $2 + if local.get $0 + f32.const 1 + f32.add + local.tee $1 i32.reinterpret_f32 - local.tee $5 - i32.const 20 + i32.const 4913933 + i32.add + local.tee $4 + i32.const 23 i32.shr_u - i32.const 2047 - i32.and - local.tee $6 - i32.const 1072 - i32.ge_u - if - f32.const 0 - local.get $5 - i32.const -8388608 - i32.eq - br_if $~lib/util/math/exp2f_lut|inlined.0 - drop + i32.const 127 + i32.sub + local.tee $2 + i32.const 25 + i32.lt_s + if (result f32) + f32.const 1 + local.get $1 local.get $0 + f32.sub + f32.sub local.get $0 + local.get $1 + f32.const -1 f32.add - local.get $6 - i32.const 2040 - i32.ge_u - br_if $~lib/util/math/exp2f_lut|inlined.0 - drop - local.get $0 - f32.const 1701411834604692317316873e14 - f32.mul - local.get $0 - f32.const 0 - f32.gt - br_if $~lib/util/math/exp2f_lut|inlined.0 - drop + f32.sub + local.get $2 + i32.const 2 + i32.ge_s + select + local.get $1 + f32.div + else f32.const 0 - local.get $0 - f32.const -150 - f32.le - br_if $~lib/util/math/exp2f_lut|inlined.0 - drop end - local.get $0 - f64.promote_f32 - local.tee $3 - f64.const 211106232532992 - f64.add - local.tee $7 - i64.reinterpret_f64 - local.set $4 - local.get $3 - local.get $7 - f64.const -211106232532992 - f64.add - f64.sub - local.tee $3 - f64.const 0.6931471806916203 - f64.mul - f64.const 1 - f64.add - local.get $3 - f64.const 0.05550361559341535 - f64.mul - f64.const 0.2402284522445722 - f64.add - local.get $3 - local.get $3 - f64.mul - f64.mul - f64.add + local.set $3 local.get $4 - i32.wrap_i64 - i32.const 31 + i32.const 8388607 i32.and - i32.const 3 - i32.shl - i32.const 7712 + i32.const 1060439283 i32.add - i64.load - local.get $4 - i64.const 47 - i64.shl - i64.add - f64.reinterpret_i64 - f64.mul - f32.demote_f64 + f32.reinterpret_i32 + f32.const -1 + f32.add + local.set $1 end local.get $1 - local.get $2 - call $std/math/check - ) - (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - (local $13 f64) local.get $1 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and + f32.const 2 + f32.add + f32.div local.tee $5 + local.get $5 + f32.mul + local.tee $0 local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $4 - i64.gt_u + f32.mul + local.set $6 + local.get $5 + local.get $1 + f32.const 0.5 + f32.mul + local.get $1 + f32.mul + local.tee $5 + local.get $0 + local.get $6 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $6 + local.get $6 + f32.const 0.24279078841209412 + f32.mul + f32.const 0.40000972151756287 + f32.add + f32.mul + f32.add + f32.add + f32.mul + local.get $2 + f32.convert_i32_s + local.tee $0 + f32.const 9.05800061445916e-06 + f32.mul + local.get $3 + f32.add + f32.add + local.get $5 + f32.sub + local.get $1 + f32.add + local.get $0 + f32.const 0.6931381225585938 + f32.mul + f32.add + ) + (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) + (local $1 i32) + (local $2 f32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 f32) + (local $7 f32) + local.get $0 + i32.reinterpret_f32 + local.tee $5 + i32.const 2147483647 + i32.and + local.set $3 + local.get $5 + i32.const 31 + i32.shr_u + local.set $5 + local.get $3 + i32.const 1100331076 + i32.ge_u if - local.get $4 + local.get $3 + i32.const 2139095040 + i32.gt_u + if + local.get $0 + return + end local.get $5 - local.set $4 - local.set $5 + if + f32.const -1 + return + end + local.get $3 + i32.const 1118925335 + i32.gt_u + if + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + return + end end - local.get $5 - f64.reinterpret_i64 - local.tee $9 - local.set $0 - block $__inlined_func$~lib/math/NativeMath.hypot$23 + local.get $3 + i32.const 1051816472 + i32.gt_u + if + local.get $0 + i32.const 1 local.get $5 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $7 - i32.const 2047 - i32.eq - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 - local.get $4 - f64.reinterpret_i64 + i32.const 1 + i32.shl + i32.sub + local.get $0 + f32.const 1.4426950216293335 + f32.mul + f32.const 0.5 + local.get $0 + f32.copysign + f32.add + i32.trunc_sat_f32_s + local.get $3 + i32.const 1065686418 + i32.lt_u + select local.tee $1 - local.set $0 - local.get $5 - i64.eqz + f32.convert_i32_s + local.tee $0 + f32.const 0.6931381225585938 + f32.mul + f32.sub + local.tee $2 + local.get $2 + local.get $0 + f32.const 9.05800061445916e-06 + f32.mul + local.tee $2 + f32.sub + local.tee $0 + f32.sub + local.get $2 + f32.sub + local.set $2 + else + local.get $3 + i32.const 855638016 + i32.lt_u + if + local.get $0 + return + end + end + f32.const 3 + local.get $0 + local.get $0 + f32.const 0.5 + f32.mul + local.tee $6 + f32.mul + local.tee $4 + local.get $4 + f32.const 1.5807170420885086e-03 + f32.mul + f32.const -0.03333321213722229 + f32.add + f32.mul + f32.const 1 + f32.add + local.tee $7 + local.get $6 + f32.mul + f32.sub + local.set $6 + local.get $4 + local.get $7 + local.get $6 + f32.sub + f32.const 6 + local.get $0 + local.get $6 + f32.mul + f32.sub + f32.div + f32.mul + local.set $6 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + local.get $6 + f32.mul local.get $4 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2047 - i32.eq - i32.or - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 - local.get $1 - local.get $9 - f64.add - local.set $0 - local.get $8 - local.get $7 - i32.sub - i32.const 64 - i32.gt_s - br_if $__inlined_func$~lib/math/NativeMath.hypot$23 - f64.const 1 - local.set $0 - local.get $8 - i32.const 1533 - i32.gt_u - if (result f64) - f64.const 5260135901548373507240989e186 - local.set $0 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - local.get $9 - f64.const 1.90109156629516e-211 - f64.mul - else - local.get $7 - i32.const 573 - i32.lt_u - if (result f64) - f64.const 1.90109156629516e-211 - local.set $0 - local.get $1 - f64.const 5260135901548373507240989e186 - f64.mul - local.set $1 - local.get $9 - f64.const 5260135901548373507240989e186 - f64.mul - else - local.get $9 - end + f32.sub + f32.sub + return + end + local.get $0 + local.get $6 + local.get $2 + f32.sub + f32.mul + local.get $2 + f32.sub + local.get $4 + f32.sub + local.set $2 + local.get $1 + i32.const -1 + i32.eq + if + local.get $0 + local.get $2 + f32.sub + f32.const 0.5 + f32.mul + f32.const -0.5 + f32.add + return + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + f32.const -0.25 + f32.lt + if + local.get $2 + local.get $0 + f32.const 0.5 + f32.add + f32.sub + f32.const -2 + f32.mul + return end - local.set $11 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 - f64.mul - local.tee $9 - f64.sub - local.get $9 - f64.add - local.tee $9 - f64.sub - local.set $12 - local.get $11 - local.get $11 - local.get $11 - f64.const 134217729 - f64.mul - local.tee $10 - f64.sub - local.get $10 - f64.add - local.tee $10 - f64.sub - local.set $13 local.get $0 - local.get $10 - local.get $10 - f64.mul - local.get $11 - local.get $11 - f64.mul + local.get $2 + f32.sub + f32.const 2 + f32.mul + f32.const 1 + f32.add + return + end + local.get $1 + i32.const 127 + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $4 + local.get $1 + i32.const 0 + i32.lt_s + local.get $1 + i32.const 56 + i32.gt_s + i32.or + if + local.get $0 + local.get $2 + f32.sub + f32.const 1 + f32.add local.tee $0 - f64.sub - local.get $10 - local.get $10 - f64.add - local.get $13 - f64.add - local.get $13 - f64.mul - f64.add - local.get $9 - local.get $9 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $1 - f64.sub - local.get $9 - local.get $9 - f64.add - local.get $12 - f64.add - local.get $12 - f64.mul - f64.add - f64.add local.get $0 - f64.add + f32.add + f32.const 1701411834604692317316873e14 + f32.mul + local.get $0 + local.get $4 + f32.mul local.get $1 - f64.add - f64.sqrt - f64.mul - local.set $0 + i32.const 128 + i32.eq + select + f32.const -1 + f32.add + return end local.get $0 + f32.const 1 + i32.const 127 + local.get $1 + i32.sub + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.tee $0 + f32.sub local.get $2 - local.get $3 - call $std/math/check + f32.sub + f32.const 1 + local.get $2 + local.get $0 + f32.add + f32.sub + local.get $1 + i32.const 20 + i32.lt_s + select + f32.add + local.get $4 + f32.mul ) - (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) - (local $4 i32) + (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) (local $5 i32) - (local $6 i32) + (local $6 f64) (local $7 f64) - local.get $1 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $5 + i32.const 1 + local.set $2 local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $4 - i32.gt_u + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 31 + i32.shr_u + local.get $5 + i32.const 1071284858 + i32.lt_u + i32.or if - local.get $4 - local.get $5 - local.set $4 - local.set $5 - end - local.get $4 - f32.reinterpret_i32 - local.set $0 - block $__inlined_func$~lib/math/NativeMathf.hypot$24 (result f32) - local.get $5 - f32.reinterpret_i32 - local.tee $1 - local.get $5 - i32.const 2139095040 - i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 - drop - local.get $0 - local.get $1 - f32.add - local.get $5 - i32.eqz - local.get $4 - i32.const 2139095040 - i32.ge_u - i32.or - local.get $4 local.get $5 - i32.sub - i32.const 209715200 - i32.ge_u - i32.or - br_if $__inlined_func$~lib/math/NativeMathf.hypot$24 - drop - local.get $4 - i32.const 1568669696 + i32.const -1074790400 i32.ge_u - if (result f32) + if local.get $0 - f32.const 8.077935669463161e-28 - f32.mul - local.set $0 - local.get $1 - f32.const 8.077935669463161e-28 - f32.mul - local.set $1 - f32.const 1237940039285380274899124e3 - else - local.get $5 - i32.const 562036736 - i32.lt_u - if (result f32) + f64.const -1 + f64.eq + if local.get $0 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $0 - local.get $1 - f32.const 1237940039285380274899124e3 - f32.mul - local.set $1 - f32.const 8.077935669463161e-28 - else - f32.const 1 + f64.const 0 + f64.div + return end - end - local.get $0 - f64.promote_f32 - local.tee $7 - local.get $7 - f64.mul - local.get $1 - f64.promote_f32 - local.tee $7 - local.get $7 - f64.mul - f64.add - f32.demote_f64 - f32.sqrt - f32.mul - end - local.get $2 - local.get $3 - call $std/math/check - ) - (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 f64) - (local $12 f64) - block $__inlined_func$~lib/math/NativeMath.log10$1 (result f64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 31 - i32.shr_u - local.tee $6 - local.get $3 - i32.const 1048576 - i32.lt_u - i32.or - if - f64.const -1 - local.get $0 - local.get $0 - f64.mul - f64.div - local.get $4 - i64.const 1 - i64.shl - i64.eqz - br_if $__inlined_func$~lib/math/NativeMath.log10$1 - drop local.get $0 local.get $0 f64.sub f64.const 0 f64.div - local.get $6 - br_if $__inlined_func$~lib/math/NativeMath.log10$1 - drop - i32.const -54 - local.set $5 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $3 - else - local.get $3 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - br $__inlined_func$~lib/math/NativeMath.log10$1 - else - f64.const 0 - local.get $4 - i64.const 32 - i64.shl - i64.eqz - local.get $3 - i32.const 1072693248 - i32.eq - i32.and - br_if $__inlined_func$~lib/math/NativeMath.log10$1 - drop - end + return end - local.get $4 - i64.const 4294967295 - i64.and - local.get $3 - i32.const 614242 - i32.add - local.tee $3 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const -1 - f64.add - local.tee $7 - f64.const 0.5 - f64.mul - local.get $7 - f64.mul - local.set $8 - local.get $7 - local.get $7 - f64.const 2 - f64.add - f64.div - local.tee $9 - local.get $9 - f64.mul - local.tee $10 - local.get $10 - f64.mul - local.set $11 - local.get $7 - local.get $7 - local.get $8 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $12 - f64.sub - local.get $8 - f64.sub - local.get $9 - local.get $8 - local.get $10 - local.get $11 - local.get $11 - local.get $11 - f64.const 0.14798198605116586 - f64.mul - f64.const 0.1818357216161805 - f64.add - f64.mul - f64.const 0.2857142874366239 - f64.add - f64.mul - f64.const 0.6666666666666735 - f64.add - f64.mul - local.get $11 - local.get $11 - local.get $11 - f64.const 0.15313837699209373 - f64.mul - f64.const 0.22222198432149784 - f64.add - f64.mul - f64.const 0.3999999999940942 - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.set $8 local.get $5 - local.get $3 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $9 - f64.const 0.30102999566361177 - f64.mul - local.tee $10 - local.get $12 - f64.const 0.4342944818781689 - f64.mul - local.tee $11 - f64.add - local.set $7 - local.get $9 - f64.const 3.694239077158931e-13 - f64.mul - local.get $8 - local.get $12 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $8 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.get $10 - local.get $7 - f64.sub - local.get $11 - f64.add - f64.add - local.get $7 - f64.add - end - local.get $1 - local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/dom/Math.log10 - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 f32) - (local $10 f32) - block $__inlined_func$~lib/math/NativeMathf.log10$25 (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_u - local.tee $4 - local.get $3 - i32.const 8388608 + i32.const 1 + i32.shl + i32.const 2034237440 i32.lt_u - i32.or if - f32.const -1 - local.get $0 - local.get $0 - f32.mul - f32.div - local.get $3 - i32.const 1 - i32.shl - i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 - drop - local.get $0 local.get $0 - f32.sub - f32.const 0 - f32.div - local.get $4 - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 - drop - i32.const -25 - local.set $6 + return + end + local.get $5 + i32.const -1076707644 + i32.le_u + if (result f64) + i32.const 0 + local.set $2 local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $3 else - local.get $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - br $__inlined_func$~lib/math/NativeMathf.log10$25 - else - f32.const 0 - local.get $3 - i32.const 1065353216 - i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.log10$25 - drop - end + f64.const 0 end - local.get $3 - i32.const 4913933 - i32.add + local.set $1 + else + local.get $5 + i32.const 2146435072 + i32.ge_u + if + local.get $0 + return + end + end + local.get $2 + if + local.get $0 + f64.const 1 + f64.add + i64.reinterpret_f64 local.tee $3 - i32.const 8388607 - i32.and - i32.const 1060439283 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 614242 i32.add - f32.reinterpret_i32 - f32.const -1 - f32.add - local.tee $8 - local.get $8 - f32.const 2 - f32.add - f32.div - local.tee $0 - local.get $0 - f32.mul local.tee $5 - local.get $5 - f32.mul - local.set $9 - local.get $6 - local.get $3 - i32.const 23 + i32.const 20 i32.shr_u - i32.const 127 + i32.const 1023 i32.sub - i32.add - f32.convert_i32_s - local.tee $7 - f32.const 7.903415166765626e-07 - f32.mul - local.get $8 - local.get $8 - local.get $8 - f32.const 0.5 - f32.mul - local.get $8 - f32.mul - local.tee $8 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $10 - f32.sub - local.get $8 - f32.sub - local.get $0 - local.get $8 + local.tee $2 + i32.const 54 + i32.lt_s + if (result f64) + f64.const 1 + local.get $3 + f64.reinterpret_i64 + local.tee $1 + local.get $0 + f64.sub + f64.sub + local.get $0 + local.get $1 + f64.const -1 + f64.add + f64.sub + local.get $2 + i32.const 2 + i32.ge_s + select + local.get $1 + f64.div + else + f64.const 0 + end + local.set $4 + local.get $3 + i64.const 4294967295 + i64.and local.get $5 - local.get $9 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $9 - local.get $9 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $10 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $0 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $10 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $7 - f32.const 0.3010292053222656 - f32.mul - f32.add + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + f64.const -1 + f64.add + local.set $1 end local.get $1 + local.get $1 + f64.const 2 + f64.add + f64.div + local.tee $6 + local.get $6 + f64.mul + local.tee $7 + local.get $7 + f64.mul + local.set $0 + local.get $6 + local.get $1 + f64.const 0.5 + f64.mul + local.get $1 + f64.mul + local.tee $6 + local.get $7 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.14798198605116586 + f64.mul + f64.const 0.1818357216161805 + f64.add + f64.mul + f64.const 0.2857142874366239 + f64.add + f64.mul + f64.const 0.6666666666666735 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + f64.const 0.15313837699209373 + f64.mul + f64.const 0.22222198432149784 + f64.add + f64.mul + f64.const 0.3999999999940942 + f64.add + f64.mul + f64.add + f64.add + f64.mul local.get $2 - call $std/math/check + f64.convert_i32_s + local.tee $0 + f64.const 1.9082149292705877e-10 + f64.mul + local.get $4 + f64.add + f64.add + local.get $6 + f64.sub + local.get $1 + f64.add + local.get $0 + f64.const 0.6931471803691238 + f64.mul + f64.add ) - (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) + (func $~lib/math/NativeMath.log (param $0 f64) (result f64) (local $1 i64) (local $2 i32) (local $3 i64) (local $4 f64) (local $5 f64) (local $6 f64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 i32) - block $~lib/util/math/log2_lut|inlined.0 (result f64) + (local $7 i32) + block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 i64.reinterpret_f64 local.tee $1 - i64.const 4606800540372828160 + i64.const 4606619468846596096 i64.sub - i64.const 581272283906048 + i64.const 854320534781952 i64.lt_u if local.get $0 f64.const -1 f64.add - local.tee $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $6 - f64.const 1.4426950407214463 - f64.mul - local.set $7 - local.get $5 - local.get $5 + local.tee $0 + local.get $0 f64.mul - local.tee $8 - local.get $8 + local.tee $4 + local.get $0 f64.mul - local.set $0 - local.get $7 - local.get $8 - local.get $5 - f64.const 0.48089834696298744 + local.tee $5 + local.get $0 + f64.const -0.24999999999998432 f64.mul - f64.const -0.7213475204444817 + f64.const 0.3333333333333352 f64.add + local.get $4 + f64.const 0.19999999999320328 f64.mul - local.tee $4 f64.add - local.tee $9 local.get $5 - local.get $6 - f64.sub - f64.const 1.4426950407214463 + local.get $0 + f64.const 0.14285715076560868 + f64.mul + f64.const -0.16666666669929706 + f64.add + local.get $4 + f64.const -0.12499997863982555 f64.mul + f64.add local.get $5 - f64.const 1.6751713164886512e-10 + local.get $0 + f64.const -0.10000486757818193 f64.mul + f64.const 0.11110712032936046 f64.add - local.get $7 - local.get $9 - f64.sub local.get $4 + f64.const 0.09181994006195467 + f64.mul f64.add - f64.add - local.get $0 local.get $5 - f64.const 0.2885390081805197 + f64.const -0.08328363062289341 f64.mul - f64.const -0.360673760222145 f64.add - local.get $8 - local.get $5 - f64.const 0.2060992861022954 f64.mul - f64.const -0.24044917405728863 f64.add f64.mul f64.add + f64.mul local.get $0 - local.get $5 - f64.const 0.1603032746063156 + local.get $0 + local.get $0 + local.get $0 + f64.const 134217728 f64.mul - f64.const -0.18033596705327856 + local.tee $4 f64.add - local.get $8 - local.get $5 - f64.const 0.13046826811283835 + local.get $4 + f64.sub + local.tee $4 + local.get $4 f64.mul - f64.const -0.14483316576701266 - f64.add + f64.const -0.5 f64.mul + local.tee $5 + f64.add + local.tee $6 + f64.sub + local.get $5 f64.add + local.get $0 + local.get $4 + f64.sub + f64.const -0.5 f64.mul + local.get $4 + local.get $0 f64.add f64.mul f64.add f64.add - br $~lib/util/math/log2_lut|inlined.0 + local.get $6 + f64.add + br $~lib/util/math/log_lut|inlined.0 end local.get $1 i64.const 48 @@ -6606,13 +7547,13 @@ i64.const 1 i64.shl i64.eqz - br_if $~lib/util/math/log2_lut|inlined.0 + br_if $~lib/util/math/log_lut|inlined.0 drop local.get $0 local.get $1 i64.const 9218868437227405312 i64.eq - br_if $~lib/util/math/log2_lut|inlined.0 + br_if $~lib/util/math/log_lut|inlined.0 drop i32.const 1 local.get $2 @@ -6631,7 +7572,7 @@ local.tee $0 local.get $0 f64.div - br $~lib/util/math/log2_lut|inlined.0 + br $~lib/util/math/log_lut|inlined.0 end local.get $0 f64.const 4503599627370496 @@ -6645,25 +7586,28 @@ i64.const 4604367669032910848 i64.sub local.tee $3 - i64.const 46 + i64.const 45 i64.shr_u - i64.const 63 + i64.const 127 i64.and i32.wrap_i64 i32.const 4 i32.shl local.tee $2 - i32.const 7968 + i32.const 1088 i32.add - local.set $10 + local.set $7 local.get $3 i64.const 52 i64.shr_s f64.convert_i64_s - local.get $10 + local.tee $0 + f64.const 0.6931471805598903 + f64.mul + local.get $7 f64.load offset=8 f64.add - local.tee $0 + local.tee $4 local.get $1 local.get $3 i64.const -4503599627370496 @@ -6671,7 +7615,7 @@ i64.sub f64.reinterpret_i64 local.get $2 - i32.const 8992 + i32.const 3136 i32.add local.tee $2 f64.load @@ -6679,3391 +7623,2843 @@ local.get $2 f64.load offset=8 f64.sub - local.get $10 + local.get $7 f64.load f64.mul - local.tee $4 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 local.tee $5 - f64.const 1.4426950407214463 - f64.mul - local.tee $6 - f64.add - local.set $7 - local.get $0 - local.get $7 - f64.sub - local.get $6 f64.add + local.set $6 local.get $4 - local.get $5 + local.get $6 f64.sub - f64.const 1.4426950407214463 - f64.mul - local.get $4 - f64.const 1.6751713164886512e-10 - f64.mul + local.get $5 f64.add + local.get $0 + f64.const 5.497923018708371e-14 + f64.mul f64.add - local.get $4 - local.get $4 + local.get $5 + local.get $5 f64.mul local.tee $0 - local.get $4 - f64.const 0.4808983469629985 + f64.const -0.5000000000000001 f64.mul - f64.const -0.7213475204444882 f64.add + local.get $5 local.get $0 - local.get $4 - f64.const 0.2885390073180969 f64.mul - f64.const -0.36067375954075914 - f64.add + local.get $5 + f64.const -0.2499999999622955 f64.mul + f64.const 0.33333333331825593 f64.add local.get $0 - local.get $0 - f64.mul - local.get $4 - f64.const 0.2061202382173603 + local.get $5 + f64.const -0.16667054827627667 f64.mul - f64.const -0.2404693555628422 + f64.const 0.20000304511814496 f64.add f64.mul f64.add f64.mul f64.add - local.get $7 + local.get $6 f64.add end ) - (func $std/math/test_log2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - block $~lib/util/math/log2f_lut|inlined.0 (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 8388608 - i32.sub - i32.const 2130706432 - i32.ge_u + (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1065353216 + i32.ge_u + if + local.get $1 + i32.const 1065353216 + i32.eq if - f32.const -inf - local.get $3 - i32.const 1 - i32.shl - local.tee $6 - i32.eqz - br_if $~lib/util/math/log2f_lut|inlined.0 - drop - local.get $0 - local.get $3 - i32.const 2139095040 - i32.eq - br_if $~lib/util/math/log2f_lut|inlined.0 - drop - local.get $3 - i32.const 31 - i32.shr_u - local.get $6 - i32.const -16777216 - i32.ge_u - i32.or - if - local.get $0 - local.get $0 - f32.sub - local.tee $0 - local.get $0 - f32.div - br $~lib/util/math/log2f_lut|inlined.0 - end - local.get $0 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - i32.const 192937984 - i32.sub - local.set $3 + f32.const 3.141592502593994 + f32.const 0 + local.get $2 + i32.const 0 + i32.lt_s + select + return end - local.get $3 - i32.const 1060306944 - i32.sub - local.tee $6 - i32.const 19 - i32.shr_u - i32.const 15 - i32.and - i32.const 4 - i32.shl - i32.const 10016 - i32.add - local.set $7 - local.get $3 - local.get $6 - i32.const -8388608 - i32.and - i32.sub - f32.reinterpret_i32 - f64.promote_f32 - local.get $7 - f64.load - f64.mul - f64.const -1 - f64.add - local.tee $4 - local.get $4 - f64.mul - local.set $5 - local.get $4 - f64.const 0.4811247078767291 - f64.mul - f64.const -0.7213476299867769 - f64.add - local.get $5 - f64.const -0.36051725506874704 - f64.mul - f64.add - local.get $5 - f64.mul - local.get $4 - f64.const 1.4426950186867042 - f64.mul - local.get $7 - f64.load offset=8 - local.get $6 - i32.const 23 - i32.shr_s - f64.convert_i32_s - f64.add - f64.add - f64.add - f32.demote_f64 + f32.const 0 + local.get $0 + local.get $0 + f32.sub + f32.div + return end local.get $1 + i32.const 1056964608 + i32.lt_u + if + local.get $1 + i32.const 847249408 + i32.le_u + if + f32.const 1.570796251296997 + return + end + f32.const 1.570796251296997 + local.get $0 + f32.const 7.549789415861596e-08 + local.get $0 + local.get $0 + local.get $0 + f32.mul + local.tee $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f32.mul + f32.sub + f32.sub + f32.sub + return + end local.get $2 - call $std/math/check - ) - (func $std/math/test_max (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - local.get $0 - local.get $1 - f64.max - local.get $2 - f64.const 0 - call $std/math/check - if (result i32) + i32.const 0 + i32.lt_s + if + f32.const 1.570796251296997 + local.get $0 + f32.const 0.5 + f32.mul + f32.const 0.5 + f32.add + local.tee $0 + f32.sqrt + local.tee $3 + local.get $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul local.get $0 - local.get $1 - call $~lib/bindings/dom/Math.max - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + local.get $3 + f32.mul + f32.const -7.549789415861596e-08 + f32.add + f32.add + f32.sub + f32.const 2 + f32.mul + return end - ) - (func $std/math/test_min (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + f32.const 0.5 local.get $0 - local.get $1 - f64.min - local.get $2 - f64.const 0 - call $std/math/check - if (result i32) - local.get $0 - local.get $1 - call $~lib/bindings/dom/Math.min - local.get $2 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + f32.const 0.5 + f32.mul + f32.sub + local.tee $3 + f32.sqrt + local.tee $4 + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $0 + local.get $3 + local.get $3 + local.get $3 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $3 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + local.get $4 + f32.mul + local.get $3 + local.get $0 + local.get $0 + f32.mul + f32.sub + local.get $4 + local.get $0 + f32.add + f32.div + f32.add + f32.add + f32.const 2 + f32.mul ) - (func $std/math/test_mod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i64) + (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i64) - (local $10 i64) - block $__inlined_func$~lib/math/NativeMath.mod$2 (result f64) + block $__inlined_func$~lib/math/NativeMath.acosh$8 (result f64) local.get $0 local.get $0 - f64.trunc f64.sub - local.get $0 - f64.copysign - local.get $1 - f64.abs - f64.const 1 - f64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$2 - drop - local.get $1 - i64.reinterpret_f64 - local.tee $7 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $9 - local.get $7 - i64.const 1 - i64.shl - local.tee $5 - i64.eqz + f64.const 0 + f64.div local.get $0 i64.reinterpret_f64 local.tee $4 + i64.const 4607182418800017408 + i64.lt_s + br_if $__inlined_func$~lib/math/NativeMath.acosh$8 + drop + local.get $4 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $10 - i64.const 2047 - i64.eq - i32.or - local.get $1 - local.get $1 - f64.ne - i32.or - if - local.get $0 - local.get $1 - f64.mul - local.tee $8 - local.get $8 - f64.div - br $__inlined_func$~lib/math/NativeMath.mod$2 - end - local.get $4 - i64.const 1 - i64.shl - local.tee $3 - local.get $5 - i64.le_u + local.tee $4 + i64.const 1024 + i64.lt_u if local.get $0 + f64.const -1 + f64.add + local.tee $3 + local.get $3 local.get $3 - local.get $5 - i64.ne - f64.convert_i32_u f64.mul - br $__inlined_func$~lib/math/NativeMath.mod$2 - end - local.get $4 - i64.const 63 - i64.shr_u - local.set $6 - local.get $10 - i64.eqz - if (result i64) - local.get $4 - i64.const 1 - local.get $10 - local.get $4 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $10 - i64.sub - i64.shl - else - local.get $4 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $3 - local.get $9 - i64.eqz - if (result i64) - local.get $7 - i64.const 1 - local.get $9 - local.get $7 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $9 - i64.sub - i64.shl - else - local.get $7 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $4 - loop $while-continue|0 - local.get $9 - local.get $10 - i64.lt_s - if - local.get $3 - local.get $4 - i64.ge_u - if (result i64) - local.get $0 - f64.const 0 - f64.mul - local.get $3 - local.get $4 - i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$2 - drop - local.get $3 - local.get $4 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $10 - i64.const 1 - i64.sub - local.set $10 - br $while-continue|0 - end + local.get $3 + local.get $3 + f64.add + f64.add + f64.sqrt + f64.add + call $~lib/math/NativeMath.log1p + br $__inlined_func$~lib/math/NativeMath.acosh$8 end - local.get $3 local.get $4 - i64.ge_u + i64.const 1049 + i64.lt_u if local.get $0 - f64.const 0 + local.get $0 + f64.add + f64.const 1 + local.get $0 + local.get $0 + local.get $0 f64.mul - local.get $3 - local.get $4 - i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$2 - drop - local.get $3 - local.get $4 - i64.sub - local.set $3 - end - local.get $10 - local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $5 - i64.sub - local.set $4 - local.get $3 - local.get $5 - i64.shl - local.set $3 - local.get $4 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.sub - local.get $4 - i64.const 52 - i64.shl - i64.or - else - local.get $3 - i64.const 1 - local.get $4 - i64.sub - i64.shr_u + f64.const -1 + f64.add + f64.sqrt + f64.add + f64.div + f64.sub + call $~lib/math/NativeMath.log + br $__inlined_func$~lib/math/NativeMath.acosh$8 end - local.get $6 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 + local.get $0 + call $~lib/math/NativeMath.log + f64.const 0.6931471805599453 + f64.add end + local.get $1 local.get $2 - f64.const 0 call $std/math/check if (result i32) local.get $0 + call $~lib/bindings/dom/Math.acosh local.get $1 - call $std/math/mod local.get $2 - f64.const 0 call $std/math/check else i32.const 0 end ) - (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) + (func $~lib/math/NativeMathf.log (param $0 f32) (result f32) + (local $1 i32) + (local $2 f64) + (local $3 f64) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - f32.abs - f32.const 1 - f32.eq - if - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - return - end - local.get $1 - i32.reinterpret_f32 - local.tee $6 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $7 - local.get $6 - i32.const 1 - i32.shl - local.tee $4 - i32.eqz - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $8 - i32.const 255 - i32.eq - i32.or - local.get $1 - local.get $1 - f32.ne - i32.or - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - local.get $3 - i32.const 1 - i32.shl - local.tee $2 - local.get $4 - i32.le_u - if + block $~lib/util/math/logf_lut|inlined.0 (result f32) local.get $0 - local.get $2 - local.get $4 - i32.ne - f32.convert_i32_u - f32.mul - return - end - local.get $3 - i32.const -2147483648 - i32.and - local.set $5 - local.get $8 - if (result i32) - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $3 - i32.const 1 - local.get $8 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $8 - i32.sub - i32.shl - end - local.set $2 - local.get $7 - if (result i32) - local.get $6 - i32.const 8388607 - i32.and + i32.reinterpret_f32 + local.tee $1 i32.const 8388608 - i32.or - else - local.get $6 - i32.const 1 - local.get $7 - local.get $6 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $7 i32.sub - i32.shl - end - local.set $3 - loop $while-continue|0 - local.get $7 - local.get $8 - i32.lt_s + i32.const 2130706432 + i32.ge_u if - local.get $2 - local.get $3 - i32.ge_u - if (result i32) - local.get $2 - local.get $3 - i32.eq - if - local.get $0 - f32.const 0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - else - local.get $2 - end + f32.const -inf + local.get $1 i32.const 1 i32.shl - local.set $2 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if + local.tee $4 + i32.eqz + br_if $~lib/util/math/logf_lut|inlined.0 + drop + local.get $0 + local.get $1 + i32.const 2139095040 + i32.eq + br_if $~lib/util/math/logf_lut|inlined.0 + drop + local.get $1 + i32.const 31 + i32.shr_u + local.get $4 + i32.const -16777216 + i32.ge_u + i32.or + if + local.get $0 + local.get $0 + f32.sub + local.tee $0 + local.get $0 + f32.div + br $~lib/util/math/logf_lut|inlined.0 + end local.get $0 - f32.const 0 + f32.const 8388608 f32.mul - return + i32.reinterpret_f32 + i32.const 192937984 + i32.sub + local.set $1 end - local.get $2 - local.get $3 + local.get $1 + i32.const 1060306944 i32.sub - local.set $2 - end - local.get $8 - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $4 - i32.sub - local.set $3 - local.get $2 - local.get $4 - i32.shl - local.set $2 - local.get $3 - i32.const 0 - i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 + local.tee $4 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 5184 + i32.add + local.set $5 + local.get $1 + local.get $4 + i32.const -8388608 + i32.and i32.sub + f32.reinterpret_i32 + f64.promote_f32 + local.get $5 + f64.load + f64.mul + f64.const -1 + f64.add + local.tee $2 + local.get $2 + f64.mul + local.set $3 + local.get $2 + f64.const 0.333456765744066 + f64.mul + f64.const -0.4999997485802103 + f64.add local.get $3 + f64.const -0.25089342214237154 + f64.mul + f64.add + local.get $3 + f64.mul + local.get $5 + f64.load offset=8 + local.get $4 i32.const 23 - i32.shl - i32.or - else + i32.shr_s + f64.convert_i32_s + f64.const 0.6931471805599453 + f64.mul + f64.add local.get $2 - i32.const 1 - local.get $3 - i32.sub - i32.shr_u + f64.add + f64.add + f32.demote_f64 end - local.get $5 - i32.or - f32.reinterpret_i32 ) - (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) - (local $11 i64) - (local $12 i64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - (local $16 f64) - (local $17 f64) - (local $18 i32) - local.get $1 - f64.abs - f64.const 2 - f64.le + (func $~lib/math/NativeMathf.asin (param $0 f32) (result f32) + (local $1 i32) + (local $2 f64) + (local $3 f32) + local.get $0 + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1065353216 + i32.ge_u if local.get $1 - f64.const 2 - f64.eq + i32.const 1065353216 + i32.eq if local.get $0 - local.get $0 - f64.mul + f32.const 1.5707963705062866 + f32.mul + f32.const 7.52316384526264e-37 + f32.add return end + f32.const 0 + local.get $0 + local.get $0 + f32.sub + f32.div + return + end + local.get $1 + i32.const 1056964608 + i32.lt_u + if local.get $1 - f64.const 0.5 - f64.eq - if - local.get $0 - f64.sqrt - f64.abs - f64.const inf - local.get $0 - f64.const -inf - f64.ne - select - return - end + i32.const 964689920 + i32.lt_u local.get $1 - f64.const -1 - f64.eq + i32.const 8388608 + i32.ge_u + i32.and if - f64.const 1 local.get $0 - f64.div return end - local.get $1 - f64.const 1 - f64.eq + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f32.mul + local.tee $0 + local.get $0 + local.get $0 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $0 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f32.mul + f32.add + return + end + f64.const 1.5707963705062866 + f32.const 0.5 + local.get $0 + f32.abs + f32.const 0.5 + f32.mul + f32.sub + local.tee $3 + f64.promote_f32 + f64.sqrt + local.tee $2 + local.get $2 + local.get $3 + local.get $3 + local.get $3 + f32.const -0.008656363002955914 + f32.mul + f32.const -0.04274342209100723 + f32.add + f32.mul + f32.const 0.16666586697101593 + f32.add + f32.mul + local.get $3 + f32.const -0.7066296339035034 + f32.mul + f32.const 1 + f32.add + f32.div + f64.promote_f32 + f64.mul + f64.add + f64.const 2 + f64.mul + f64.sub + f32.demote_f64 + local.get $0 + f32.copysign + ) + (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + local.get $0 + local.set $1 + local.get $0 + i64.reinterpret_f64 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1141899264 + i32.ge_u + if + local.get $0 + local.get $0 + f64.ne if local.get $0 return end + f64.const 1.5707963267948966 local.get $1 - f64.const 0 - f64.eq + f64.copysign + return + end + local.get $2 + i32.const 1071382528 + i32.lt_u + if + local.get $2 + i32.const 1044381696 + i32.lt_u if - f64.const 1 + local.get $0 return end - end - block $~lib/util/math/pow_lut|inlined.0 (result f64) - local.get $1 - i64.reinterpret_f64 - local.tee $11 - i64.const 52 - i64.shr_u - local.set $6 + i32.const -1 + local.set $3 + else local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 52 - i64.shr_u - local.tee $5 - i64.const 1 - i64.sub - i64.const 2046 - i64.ge_u - if (result i32) - i32.const 1 - else - local.get $6 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 128 - i64.ge_u - end - if - local.get $11 - i64.const 1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - i64.const -9007199254740993 - i64.ge_u - if - f64.const 1 - local.get $12 - i64.eqz - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const nan:0x8000000000000 - local.get $2 - i64.const 4607182418800017408 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - local.get $0 - local.get $1 - f64.add - local.get $12 - i64.const -9007199254740992 - i64.gt_u - local.get $2 - i64.const 1 - i64.shl - local.tee $2 - i64.const -9007199254740992 - i64.gt_u - i32.or - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const nan:0x8000000000000 - local.get $2 - i64.const 9214364837600034816 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const 0 - local.get $11 - i64.const 63 - i64.shr_u - i64.eqz - local.get $2 - i64.const 9214364837600034816 - i64.lt_u - i32.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - local.get $1 - local.get $1 - f64.mul - br $~lib/util/math/pow_lut|inlined.0 - end + f64.abs + local.set $0 + local.get $2 + i32.const 1072889856 + i32.lt_u + if (result f64) local.get $2 - i64.const 1 - i64.shl - i64.const 1 - i64.sub - i64.const -9007199254740993 - i64.ge_u - if - f64.const 1 - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.neg + i32.const 1072037888 + i32.lt_u + if (result f64) local.get $0 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - if (result i32) - block $~lib/util/math/checkint|inlined.0 (result i32) - i32.const 0 - local.get $11 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $2 - i64.const 1023 - i64.lt_u - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 2 - local.get $2 - i64.const 1075 - i64.gt_u - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 0 - local.get $11 - i64.const 1 - i64.const 1075 - local.get $2 - i64.sub - i64.shl - local.tee $2 - i64.const 1 - i64.sub - i64.and - i64.const 0 - i64.ne - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 1 - local.get $2 - local.get $11 - i64.and - i64.const 0 - i64.ne - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - select - local.tee $0 - f64.div local.get $0 - local.get $11 - i64.const 0 - i64.lt_s - select - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $2 - i64.const 0 - i64.lt_s - if - block $~lib/util/math/checkint|inlined.1 (result i32) - i32.const 0 - local.get $11 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $12 - i64.const 1023 - i64.lt_u - br_if $~lib/util/math/checkint|inlined.1 - drop - i32.const 2 - local.get $12 - i64.const 1075 - i64.gt_u - br_if $~lib/util/math/checkint|inlined.1 - drop - i32.const 0 - local.get $11 - i64.const 1 - i64.const 1075 - local.get $12 - i64.sub - i64.shl - local.tee $12 - i64.const 1 - i64.sub - i64.and - i64.const 0 - i64.ne - br_if $~lib/util/math/checkint|inlined.1 - drop - i32.const 1 - local.get $11 - local.get $12 - i64.and - i64.const 0 - i64.ne - br_if $~lib/util/math/checkint|inlined.1 - drop - i32.const 2 - end - local.tee $3 - i32.eqz - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - local.get $0 - f64.div - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $5 - i64.const 2047 - i64.and - local.set $5 - i32.const 262144 - i32.const 0 - local.get $3 + f64.add + f64.const -1 + f64.add + local.get $0 + f64.const 2 + f64.add + f64.div + else i32.const 1 - i32.eq - select - local.set $4 - local.get $2 - i64.const 9223372036854775807 - i64.and - local.set $2 - end - local.get $6 - i64.const 2047 - i64.and - local.tee $12 - i64.const 958 - i64.sub - i64.const 128 - i64.ge_u - if - f64.const 1 - local.get $2 - i64.const 4607182418800017408 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop + local.set $3 + local.get $0 + f64.const -1 + f64.add + local.get $0 f64.const 1 - local.get $12 - i64.const 958 - i64.lt_u - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const inf - f64.const 0 - local.get $6 - i64.const 2048 - i64.lt_u - local.get $2 - i64.const 4607182418800017408 - i64.gt_u - i32.eq - select - br $~lib/util/math/pow_lut|inlined.0 + f64.add + f64.div end - local.get $5 - i64.eqz - if + else + local.get $2 + i32.const 1073971200 + i32.lt_u + if (result f64) + i32.const 2 + local.set $3 local.get $0 - f64.const 4503599627370496 + f64.const -1.5 + f64.add + local.get $0 + f64.const 1.5 f64.mul - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - i64.const 234187180623265792 - i64.sub - local.set $2 + f64.const 1 + f64.add + f64.div + else + i32.const 3 + local.set $3 + f64.const -1 + local.get $0 + f64.div end end - local.get $2 - local.get $2 - i64.const 4604531861337669632 - i64.sub - local.tee $2 - i64.const -4503599627370496 - i64.and - i64.sub - local.tee $5 - i64.const 2147483648 - i64.add - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $7 - local.get $2 - i64.const 45 - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - i32.const 5 - i32.shl - i32.const 10272 - i32.add - local.tee $3 - f64.load - local.tee $8 - f64.mul - f64.const -1 - f64.add - local.set $9 - local.get $2 - i64.const 52 - i64.shr_s - f64.convert_i64_s - local.tee $13 - f64.const 0.6931471805598903 - f64.mul - local.get $3 - f64.load offset=16 - f64.add - local.tee $0 - local.get $9 - local.get $5 - f64.reinterpret_i64 - local.get $7 - f64.sub - local.get $8 - f64.mul - local.tee $7 - f64.add - local.tee $14 - f64.add - local.set $15 - local.get $14 - local.get $14 - f64.const -0.5 - f64.mul - local.tee $8 - f64.mul - local.set $16 - local.get $15 - local.get $9 - local.get $9 - f64.const -0.5 - f64.mul - local.tee $17 - f64.mul - local.tee $9 - f64.add - local.tee $10 - local.get $10 - local.get $13 - f64.const 5.497923018708371e-14 - f64.mul - local.get $3 - f64.load offset=24 - f64.add + local.set $0 + end + local.get $0 + local.get $0 + f64.mul + local.tee $5 + local.get $5 + f64.mul + local.set $4 + local.get $0 + local.get $5 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const 0.016285820115365782 + f64.mul + f64.const 0.049768779946159324 + f64.add + f64.mul + f64.const 0.06661073137387531 + f64.add + f64.mul + f64.const 0.09090887133436507 + f64.add + f64.mul + f64.const 0.14285714272503466 + f64.add + f64.mul + f64.const 0.3333333333333293 + f64.add + f64.mul + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const -0.036531572744216916 + f64.mul + f64.const -0.058335701337905735 + f64.add + f64.mul + f64.const -0.0769187620504483 + f64.add + f64.mul + f64.const -0.11111110405462356 + f64.add + f64.mul + f64.const -0.19999999999876483 + f64.add + f64.mul + f64.add + f64.mul + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if local.get $0 - local.get $15 - f64.sub - local.get $14 - f64.add - f64.add - local.get $7 - local.get $8 - local.get $17 - f64.add - f64.mul - f64.add - local.get $15 - local.get $10 - f64.sub - local.get $9 - f64.add - f64.add - local.get $14 - local.get $16 - f64.mul - local.get $14 - f64.const 0.5000000000000007 - f64.mul - f64.const -0.6666666666666679 - f64.add - local.get $16 - local.get $14 - f64.const -0.6666666663487739 - f64.mul - f64.const 0.7999999995323976 - f64.add - local.get $16 - local.get $14 - f64.const 1.0000415263675542 - f64.mul - f64.const -1.142909628459501 - f64.add - f64.mul - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $0 - f64.add - local.tee $7 + local.get $4 f64.sub - local.get $0 - f64.add - global.set $~lib/util/math/log_tail - block $~lib/util/math/exp_inline|inlined.0 (result f64) - local.get $11 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.tee $0 - local.get $7 - i64.reinterpret_f64 - i64.const -134217728 - i64.and - f64.reinterpret_i64 - local.tee $8 - f64.mul - local.tee $9 - i64.reinterpret_f64 - local.tee $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - i32.const 2047 - i32.and - local.tee $3 - i32.const 969 - i32.sub - local.tee $18 - i32.const 63 - i32.ge_u - if - f64.const -1 - f64.const 1 - local.get $4 - select - local.get $18 - i32.const -2147483648 - i32.ge_u - br_if $~lib/util/math/exp_inline|inlined.0 - drop - f64.const -0 - f64.const 0 - local.get $4 - select - f64.const -inf - f64.const inf + return + end + block $break|0 (result f64) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + block $tablify|0 + local.get $3 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 + end + unreachable + end + f64.const 0.4636476090008061 + local.get $4 + f64.const -2.2698777452961687e-17 + f64.add + local.get $0 + f64.sub + f64.sub + br $break|0 + end + f64.const 0.7853981633974483 local.get $4 - select - local.get $2 - i64.const 0 - i64.lt_s - select - local.get $3 - i32.const 1033 - i32.ge_u - br_if $~lib/util/math/exp_inline|inlined.0 - drop - i32.const 0 - local.set $3 + f64.const -3.061616997868383e-17 + f64.add + local.get $0 + f64.sub + f64.sub + br $break|0 end - local.get $9 - f64.const 184.6649652337873 - f64.mul - f64.const 6755399441055744 - f64.add - local.tee $10 - i64.reinterpret_f64 - local.tee $2 - i64.const 127 - i64.and - i64.const 1 - i64.shl - i32.wrap_i64 - i32.const 3 - i32.shl - i32.const 5664 - i32.add - local.tee $18 - i64.load offset=8 - local.get $2 + f64.const 0.982793723247329 local.get $4 - i64.extend_i32_u - i64.add - i64.const 45 - i64.shl - i64.add - local.set $5 - local.get $9 - local.get $10 - f64.const -6755399441055744 + f64.const -1.3903311031230998e-17 f64.add - local.tee $9 - f64.const -0.005415212348111709 - f64.mul - f64.add - local.get $9 - f64.const -1.2864023111638346e-14 - f64.mul - f64.add - local.get $1 local.get $0 f64.sub - local.get $8 - f64.mul - local.get $1 - local.get $7 - local.get $8 f64.sub - global.get $~lib/util/math/log_tail - f64.add - f64.mul - f64.add - f64.add - local.tee $0 - local.get $0 - f64.mul - local.set $1 - local.get $18 - f64.load - local.get $0 - f64.add - local.get $1 - local.get $0 - f64.const 0.16666666666665886 - f64.mul - f64.const 0.49999999999996786 - f64.add - f64.mul - f64.add - local.get $1 - local.get $1 - f64.mul - local.get $0 - f64.const 0.008333335853059549 - f64.mul - f64.const 0.0416666808410674 - f64.add - f64.mul - f64.add - local.set $0 - local.get $3 - i32.eqz - if - block $~lib/util/math/specialcase|inlined.1 (result f64) - local.get $2 - i64.const 2147483648 - i64.and - i64.eqz - if - local.get $5 - i64.const 4544132024016830464 - i64.sub - f64.reinterpret_i64 - local.tee $1 - local.get $1 - local.get $0 - f64.mul - f64.add - f64.const 5486124068793688683255936e279 - f64.mul - br $~lib/util/math/specialcase|inlined.1 - end - local.get $5 - i64.const 4602678819172646912 - i64.add - local.tee $2 - f64.reinterpret_i64 - local.tee $1 - local.get $0 - f64.mul - local.set $0 - local.get $1 - local.get $0 - f64.add - local.tee $7 - f64.abs - f64.const 1 - f64.lt - if (result f64) - f64.const 1 - local.get $7 - f64.copysign - local.tee $8 - local.get $7 - f64.add - local.tee $9 - local.get $8 - local.get $9 - f64.sub - local.get $7 - f64.add - local.get $1 - local.get $7 - f64.sub - local.get $0 - f64.add - f64.add - f64.add - local.get $8 - f64.sub - local.tee $0 - f64.const 0 - f64.eq - if (result f64) - local.get $2 - i64.const -9223372036854775808 - i64.and - f64.reinterpret_i64 - else - local.get $0 - end - else - local.get $7 - end - f64.const 2.2250738585072014e-308 - f64.mul - end - br $~lib/util/math/exp_inline|inlined.0 - end - local.get $5 - f64.reinterpret_i64 - local.tee $1 - local.get $1 - local.get $0 - f64.mul - f64.add + br $break|0 end - end - ) - (func $std/math/test_pow (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - local.get $0 - local.get $1 - call $~lib/math/NativeMath.pow - local.get $2 - local.get $3 - call $std/math/check - if (result i32) + f64.const 1.5707963267948966 + local.get $4 + f64.const -6.123233995736766e-17 + f64.add local.get $0 - local.get $1 - call $~lib/bindings/dom/Math.pow - local.get $2 - local.get $3 - call $std/math/check - else - i32.const 0 + f64.sub + f64.sub end - ) - (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) local.get $1 - f32.abs - f32.const 2 - f32.le + f64.copysign + ) + (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 f64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1072693248 + i32.ge_u if + local.get $2 + i32.wrap_i64 local.get $1 - f32.const 2 - f32.eq - if - local.get $0 - local.get $0 - f32.mul - return - end - local.get $1 - f32.const 0.5 - f32.eq + i32.const 1072693248 + i32.sub + i32.or + i32.eqz if local.get $0 - f32.sqrt - f32.abs - f32.const inf - local.get $0 - f32.const -inf - f32.ne - select + f64.const 1.5707963267948966 + f64.mul + f64.const 7.52316384526264e-37 + f64.add return end + f64.const 0 + local.get $0 + local.get $0 + f64.sub + f64.div + return + end + local.get $1 + i32.const 1071644672 + i32.lt_u + if local.get $1 - f32.const -1 - f32.eq - if - f32.const 1 - local.get $0 - f32.div - return - end + i32.const 1045430272 + i32.lt_u local.get $1 - f32.const 1 - f32.eq + i32.const 1048576 + i32.ge_u + i32.and if local.get $0 return end - local.get $1 - f32.const 0 - f32.eq - if - f32.const 1 - return - end + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.mul + local.tee $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + f64.mul + f64.add + return end - block $~lib/util/math/powf_lut|inlined.0 (result f32) - local.get $1 - i32.reinterpret_f32 - local.tee $8 - i32.const 1 - i32.shl - local.tee $6 - i32.const 1 - i32.sub - i32.const -16777217 - i32.ge_u - local.tee $7 + f64.const 0.5 + local.get $0 + f64.abs + f64.const 0.5 + f64.mul + f64.sub + local.tee $0 + f64.sqrt + local.set $4 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + local.set $5 + local.get $1 + i32.const 1072640819 + i32.ge_u + if (result f64) + f64.const 1.5707963267948966 + local.get $4 + local.get $4 + local.get $5 + f64.mul + f64.add + f64.const 2 + f64.mul + f64.const -6.123233995736766e-17 + f64.add + f64.sub + else + f64.const 0.7853981633974483 + local.get $4 + local.get $4 + f64.add + local.get $5 + f64.mul + f64.const 6.123233995736766e-17 local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 8388608 + local.get $4 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $0 + local.get $0 + f64.mul + f64.sub + local.get $4 + local.get $0 + f64.add + f64.div + f64.const 2 + f64.mul + f64.sub + f64.sub + f64.const 0.7853981633974483 + local.get $0 + local.get $0 + f64.add + f64.sub + f64.sub + f64.sub + end + local.tee $0 + f64.neg + local.get $0 + local.get $3 + i32.const 0 + i32.lt_s + select + ) + (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + local.tee $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 2147483647 + i32.and + local.tee $1 + i32.const 1072693248 + i32.ge_u + if + local.get $3 + i32.wrap_i64 + local.get $1 + i32.const 1072693248 i32.sub - i32.const 2130706432 - i32.ge_u i32.or + i32.eqz if - local.get $7 - if - f32.const 1 - local.get $6 - i32.eqz - br_if $~lib/util/math/powf_lut|inlined.0 - drop - f32.const nan:0x400000 - local.get $2 - i32.const 1065353216 - i32.eq - br_if $~lib/util/math/powf_lut|inlined.0 - drop - local.get $0 - local.get $1 - f32.add - local.get $6 - i32.const -16777216 - i32.gt_u - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - i32.const -16777216 - i32.gt_u - i32.or - br_if $~lib/util/math/powf_lut|inlined.0 - drop - f32.const nan:0x400000 - local.get $2 - i32.const 2130706432 - i32.eq - br_if $~lib/util/math/powf_lut|inlined.0 - drop - f32.const 0 - local.get $8 - i32.const 31 - i32.shr_u - i32.eqz - local.get $2 - i32.const 2130706432 - i32.lt_u - i32.eq - br_if $~lib/util/math/powf_lut|inlined.0 - drop - local.get $1 - local.get $1 - f32.mul - br $~lib/util/math/powf_lut|inlined.0 - end - local.get $2 - i32.const 1 - i32.shl - i32.const 1 - i32.sub - i32.const -16777217 - i32.ge_u - if - f32.const 1 - local.get $0 - local.get $0 - f32.mul - local.tee $0 - f32.neg - local.get $0 - local.get $2 - i32.const 31 - i32.shr_u - if (result i32) - block $~lib/util/math/checkintf|inlined.0 (result i32) - i32.const 0 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $2 - i32.const 127 - i32.lt_u - br_if $~lib/util/math/checkintf|inlined.0 - drop - i32.const 2 - local.get $2 - i32.const 150 - i32.gt_u - br_if $~lib/util/math/checkintf|inlined.0 - drop - i32.const 0 - local.get $8 - i32.const 1 - i32.const 150 - local.get $2 - i32.sub - i32.shl - local.tee $2 - i32.const 1 - i32.sub - i32.and - br_if $~lib/util/math/checkintf|inlined.0 - drop - i32.const 1 - local.get $2 - local.get $8 - i32.and - br_if $~lib/util/math/checkintf|inlined.0 - drop - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - select - local.tee $0 - f32.div - local.get $0 - local.get $8 - i32.const 0 - i32.lt_s - select - br $~lib/util/math/powf_lut|inlined.0 - end local.get $2 i32.const 0 i32.lt_s if - block $~lib/util/math/checkintf|inlined.1 (result i32) - i32.const 0 - local.get $8 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $4 - i32.const 127 - i32.lt_u - br_if $~lib/util/math/checkintf|inlined.1 - drop - i32.const 2 - local.get $4 - i32.const 150 - i32.gt_u - br_if $~lib/util/math/checkintf|inlined.1 - drop - i32.const 0 - local.get $8 - i32.const 1 - i32.const 150 - local.get $4 - i32.sub - i32.shl - local.tee $4 - i32.const 1 - i32.sub - i32.and - br_if $~lib/util/math/checkintf|inlined.1 - drop - i32.const 1 - local.get $4 - local.get $8 - i32.and - br_if $~lib/util/math/checkintf|inlined.1 - drop - i32.const 2 - end - local.tee $4 - i32.eqz - if - local.get $0 - local.get $0 - f32.sub - local.tee $0 - local.get $0 - f32.div - br $~lib/util/math/powf_lut|inlined.0 - end - i32.const 65536 - i32.const 0 - local.get $4 - i32.const 1 - i32.eq - select - local.set $4 - local.get $2 - i32.const 2147483647 - i32.and - local.set $2 - end - local.get $2 - i32.const 8388608 - i32.lt_u - if - local.get $0 - f32.const 8388608 - f32.mul - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - i32.const 192937984 - i32.sub - local.set $2 + f64.const 3.141592653589793 + return end + f64.const 0 + return + end + f64.const 0 + local.get $0 + local.get $0 + f64.sub + f64.div + return + end + local.get $1 + i32.const 1071644672 + i32.lt_u + if + local.get $1 + i32.const 1012924416 + i32.le_u + if + f64.const 1.5707963267948966 + return end - local.get $2 - local.get $2 - i32.const 1060306944 - i32.sub - local.tee $2 - i32.const -8388608 - i32.and - local.tee $6 - i32.sub - f32.reinterpret_i32 - f64.promote_f32 - local.get $2 - i32.const 19 - i32.shr_u - i32.const 15 - i32.and - i32.const 4 - i32.shl - i32.const 10016 - i32.add - local.tee $2 - f64.load + f64.const 1.5707963267948966 + local.get $0 + f64.const 6.123233995736766e-17 + local.get $0 + local.get $0 + local.get $0 f64.mul - f64.const -1 + local.tee $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 f64.add - local.tee $3 - local.get $3 f64.mul - local.set $9 - local.get $1 - f64.promote_f32 - local.get $3 - f64.const 0.288457581109214 + f64.const -0.04005553450067941 + f64.add f64.mul - f64.const -0.36092606229713164 + f64.const 0.20121253213486293 f64.add - local.get $9 - local.get $9 f64.mul + f64.const -0.3255658186224009 + f64.add f64.mul - local.get $3 - f64.const 1.4426950408774342 + f64.const 0.16666666666666666 + f64.add f64.mul - local.get $2 - f64.load offset=8 - local.get $6 - i32.const 23 - i32.shr_s - f64.convert_i32_s + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 f64.add + f64.mul + f64.const 2.0209457602335057 f64.add - local.get $3 - f64.const 0.480898481472577 f64.mul - f64.const -0.7213474675006291 + f64.const -2.403394911734414 f64.add - local.get $9 f64.mul + f64.const 1 f64.add + f64.div + f64.mul + f64.sub + f64.sub + f64.sub + return + end + local.get $2 + i32.const 0 + i32.lt_s + if + f64.const 1.5707963267948966 + local.get $0 + f64.const 0.5 + f64.mul + f64.const 0.5 f64.add + local.tee $0 + f64.sqrt + local.tee $4 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 3.479331075960212e-05 f64.mul - local.tee $3 - i64.reinterpret_f64 - i64.const 47 - i64.shr_u - i64.const 65535 - i64.and - i64.const 32959 - i64.ge_u - if - f32.const -inf - f32.const inf - local.get $4 - select - local.get $3 - f64.const 127.99999995700433 - f64.gt - br_if $~lib/util/math/powf_lut|inlined.0 - drop - f32.const -0 - f32.const 0 - local.get $4 - select - local.get $3 - f64.const -150 - f64.le - br_if $~lib/util/math/powf_lut|inlined.0 - drop - end - local.get $3 - f64.const 211106232532992 + f64.const 7.915349942898145e-04 f64.add - local.tee $9 - i64.reinterpret_f64 - local.set $5 - local.get $3 - local.get $9 - f64.const -211106232532992 + f64.mul + f64.const -0.04005553450067941 f64.add - f64.sub - local.tee $3 - f64.const 0.6931471806916203 f64.mul - f64.const 1 + f64.const 0.20121253213486293 f64.add - local.get $3 - f64.const 0.05550361559341535 f64.mul - f64.const 0.2402284522445722 + f64.const -0.3255658186224009 f64.add - local.get $3 - local.get $3 f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + local.get $0 + f64.const 0.07703815055590194 f64.mul + f64.const -0.6882839716054533 f64.add - local.get $5 - i32.wrap_i64 - i32.const 31 - i32.and - i32.const 3 - i32.shl - i32.const 7712 - i32.add - i64.load - local.get $5 + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div local.get $4 - i64.extend_i32_u - i64.add - i64.const 47 - i64.shl - i64.add - f64.reinterpret_i64 f64.mul - f32.demote_f64 + f64.const -6.123233995736766e-17 + f64.add + f64.add + f64.sub + f64.const 2 + f64.mul + return end - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - (local $1 i32) - (local $2 i64) - i64.const -7046029254386353131 - local.get $0 + f64.const 0.5 local.get $0 - i64.eqz - select + f64.const 0.5 + f64.mul + f64.sub + local.tee $4 + f64.sqrt + local.tee $5 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 local.tee $0 - i64.const 33 - i64.shr_u + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const 3.479331075960212e-05 + f64.mul + f64.const 7.915349942898145e-04 + f64.add + f64.mul + f64.const -0.04005553450067941 + f64.add + f64.mul + f64.const 0.20121253213486293 + f64.add + f64.mul + f64.const -0.3255658186224009 + f64.add + f64.mul + f64.const 0.16666666666666666 + f64.add + f64.mul + local.get $4 + local.get $4 + local.get $4 + local.get $4 + f64.const 0.07703815055590194 + f64.mul + f64.const -0.6882839716054533 + f64.add + f64.mul + f64.const 2.0209457602335057 + f64.add + f64.mul + f64.const -2.403394911734414 + f64.add + f64.mul + f64.const 1 + f64.add + f64.div + local.get $5 + f64.mul + local.get $4 local.get $0 - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - i64.const -1 - i64.xor - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $2 - i64.const 33 - i64.shr_u - local.get $2 - i64.xor - global.set $~lib/math/random_state1_64 local.get $0 - i32.wrap_i64 - i32.const 1831565813 - i32.add - local.tee $1 - i32.const 1 - i32.or - local.get $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.mul - local.tee $1 - i32.const 61 - i32.or - local.get $1 - local.get $1 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - local.get $1 - i32.add - local.get $1 - i32.xor - local.tee $1 - i32.const 14 - i32.shr_u - local.get $1 - i32.xor - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - i32.const 1831565813 - i32.add - local.tee $1 - i32.const 1 - i32.or - local.get $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.mul - local.tee $1 - i32.const 61 - i32.or - local.get $1 - local.get $1 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - local.get $1 - i32.add - local.get $1 - i32.xor - local.tee $1 - i32.const 14 - i32.shr_u - local.get $1 - i32.xor - global.set $~lib/math/random_state1_32 - i32.const 1 - global.set $~lib/math/random_seeded - ) - (func $std/math/test_round (param $0 f64) (param $1 f64) (result i32) - (local $2 f64) + f64.mul + f64.sub + local.get $5 local.get $0 - f64.ceil - local.tee $2 - local.get $2 - f64.const -1 f64.add - local.get $2 - f64.const -0.5 + f64.div f64.add - local.get $0 - f64.le - select - local.get $1 - f64.const 0 - call $std/math/check + f64.add + f64.const 2 + f64.mul ) - (func $std/math/test_roundf (param $0 f32) (param $1 f32) (result i32) - (local $2 f32) - local.get $0 - f32.ceil - local.tee $2 - local.get $2 - f32.const -1 - f32.add - local.get $2 - f32.const -0.5 - f32.add - local.get $0 - f32.le - select + (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f64) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) + (local $8 f64) + block $__inlined_func$~lib/math/NativeMathf.cbrt$19 (result f32) + local.get $0 + local.get $0 + f32.add + local.get $0 + i32.reinterpret_f32 + local.tee $4 + i32.const 2147483647 + i32.and + local.tee $6 + i32.const 2139095040 + i32.ge_u + br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 + drop + local.get $6 + i32.const 8388608 + i32.lt_u + if (result i32) + local.get $0 + local.get $6 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.cbrt$19 + drop + local.get $0 + f32.const 16777216 + f32.mul + i32.reinterpret_f32 + local.tee $4 + i32.const 2147483647 + i32.and + i32.const 3 + i32.div_u + i32.const 642849266 + i32.add + else + local.get $6 + i32.const 3 + i32.div_u + i32.const 709958130 + i32.add + end + local.get $4 + i32.const -2147483648 + i32.and + i32.or + f32.reinterpret_i32 + f64.promote_f32 + local.tee $3 + local.get $3 + f64.mul + local.get $3 + f64.mul + local.set $7 + local.get $3 + local.get $0 + f64.promote_f32 + local.tee $5 + local.get $5 + f64.add + local.tee $3 + local.get $7 + f64.add + f64.mul + local.get $5 + local.get $7 + f64.add + local.get $7 + f64.add + f64.div + local.tee $7 + local.get $7 + f64.mul + local.get $7 + f64.mul + local.set $8 + local.get $7 + local.get $3 + local.get $8 + f64.add + f64.mul + local.get $5 + local.get $8 + f64.add + local.get $8 + f64.add + f64.div + f32.demote_f64 + end local.get $1 - f32.const 0 + local.get $2 call $std/math/check ) - (func $std/math/test_sign (param $0 f64) (param $1 f64) (result i32) - f64.const 1 - f64.const -1 - local.get $0 + (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) + (local $4 i32) + (local $5 i64) + (local $6 f64) local.get $0 - f64.const 0 - f64.lt - select local.get $0 - f64.const 0 - f64.gt - select + f64.add + local.set $3 + block $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $0 + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.const 2146435072 + i32.ge_u + br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $4 + i32.const 1048576 + i32.lt_u + if (result i32) + local.get $0 + local.tee $3 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $4 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMath.cbrt$18 + local.get $4 + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + else + local.get $4 + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add + end + local.set $4 + local.get $5 + i64.const -9223372036854775808 + i64.and + local.get $4 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $3 + local.get $3 + f64.mul + local.get $3 + local.get $0 + f64.div + f64.mul + local.set $6 + local.get $0 + local.get $3 + local.get $6 + local.get $6 + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $6 + f64.mul + local.get $6 + f64.const 0.14599619288661245 + f64.mul + f64.const -0.758397934778766 + f64.add + f64.mul + f64.add + f64.mul + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.tee $3 + local.get $3 + f64.mul + f64.div + local.set $6 + local.get $3 + local.get $3 + local.get $6 + local.get $3 + f64.sub + local.get $3 + local.get $3 + f64.add + local.get $6 + f64.add + f64.div + f64.mul + f64.add + local.set $3 + end + local.get $3 local.get $1 - f64.const 0 + local.get $2 call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/dom/Math.sign + call $~lib/bindings/dom/Math.cbrt local.get $1 - f64.const 0 + local.get $2 call $std/math/check else i32.const 0 end ) - (func $std/math/test_signf (param $0 f32) (param $1 f32) (result i32) - f32.const 1 - f32.const -1 + (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f32) local.get $0 + local.set $1 local.get $0 - f32.const 0 - f32.lt - select + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $2 + i32.const 1283457024 + i32.ge_u + if + local.get $0 + local.get $0 + f32.ne + if + local.get $0 + return + end + f32.const 1.570796251296997 + local.get $1 + f32.copysign + return + end + local.get $2 + i32.const 1054867456 + i32.lt_u + if + local.get $2 + i32.const 964689920 + i32.lt_u + if + local.get $0 + return + end + i32.const -1 + local.set $3 + else + local.get $0 + f32.abs + local.set $0 + local.get $2 + i32.const 1066926080 + i32.lt_u + if (result f32) + local.get $2 + i32.const 1060110336 + i32.lt_u + if (result f32) + local.get $0 + local.get $0 + f32.add + f32.const -1 + f32.add + local.get $0 + f32.const 2 + f32.add + f32.div + else + i32.const 1 + local.set $3 + local.get $0 + f32.const -1 + f32.add + local.get $0 + f32.const 1 + f32.add + f32.div + end + else + local.get $2 + i32.const 1075576832 + i32.lt_u + if (result f32) + i32.const 2 + local.set $3 + local.get $0 + f32.const -1.5 + f32.add + local.get $0 + f32.const 1.5 + f32.mul + f32.const 1 + f32.add + f32.div + else + i32.const 3 + local.set $3 + f32.const -1 + local.get $0 + f32.div + end + end + local.set $0 + end local.get $0 - f32.const 0 - f32.gt - select + local.get $0 + f32.mul + local.tee $5 + local.get $5 + f32.mul + local.set $4 + local.get $0 + local.get $5 + local.get $4 + local.get $4 + f32.const 0.06168760731816292 + f32.mul + f32.const 0.14253635704517365 + f32.add + f32.mul + f32.const 0.333333283662796 + f32.add + f32.mul + local.get $4 + local.get $4 + f32.const -0.106480173766613 + f32.mul + f32.const -0.19999158382415771 + f32.add + f32.mul + f32.add + f32.mul + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $4 + f32.sub + return + end + block $break|0 (result f32) + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + block $tablify|0 + local.get $3 + br_table $case0|0 $case1|0 $case2|0 $case3|0 $tablify|0 + end + unreachable + end + f32.const 0.46364760398864746 + local.get $4 + f32.const -5.01215824399992e-09 + f32.add + local.get $0 + f32.sub + f32.sub + br $break|0 + end + f32.const 0.7853981256484985 + local.get $4 + f32.const -3.774894707930798e-08 + f32.add + local.get $0 + f32.sub + f32.sub + br $break|0 + end + f32.const 0.9827936887741089 + local.get $4 + f32.const -3.447321716976148e-08 + f32.add + local.get $0 + f32.sub + f32.sub + br $break|0 + end + f32.const 1.570796251296997 + local.get $4 + f32.const -7.549789415861596e-08 + f32.add + local.get $0 + f32.sub + f32.sub + end local.get $1 - f32.const 0 - call $std/math/check + f32.copysign ) - (func $~lib/math/NativeMath.rem (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) + (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) + (local $1 i64) + (local $2 i32) (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 i64) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 f64) (local $8 f64) - local.get $1 - i64.reinterpret_f64 - local.tee $7 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $4 - local.get $7 - i64.const 1 - i64.shl - i64.eqz - local.get $0 - i64.reinterpret_f64 - local.tee $6 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $3 - i64.const 2047 - i64.eq - i32.or - local.get $1 - local.get $1 - f64.ne - i32.or - if + (local $9 f64) + (local $10 i32) + block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 + i64.reinterpret_f64 + local.tee $1 + i64.const 4606800540372828160 + i64.sub + i64.const 581272283906048 + i64.lt_u + if + local.get $0 + f64.const -1 + f64.add + local.tee $5 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $6 + f64.const 1.4426950407214463 + f64.mul + local.set $7 + local.get $5 + local.get $5 + f64.mul + local.tee $8 + local.get $8 + f64.mul + local.set $0 + local.get $7 + local.get $8 + local.get $5 + f64.const 0.48089834696298744 + f64.mul + f64.const -0.7213475204444817 + f64.add + f64.mul + local.tee $4 + f64.add + local.tee $9 + local.get $5 + local.get $6 + f64.sub + f64.const 1.4426950407214463 + f64.mul + local.get $5 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + local.get $7 + local.get $9 + f64.sub + local.get $4 + f64.add + f64.add + local.get $0 + local.get $5 + f64.const 0.2885390081805197 + f64.mul + f64.const -0.360673760222145 + f64.add + local.get $8 + local.get $5 + f64.const 0.2060992861022954 + f64.mul + f64.const -0.24044917405728863 + f64.add + f64.mul + f64.add + local.get $0 + local.get $5 + f64.const 0.1603032746063156 + f64.mul + f64.const -0.18033596705327856 + f64.add + local.get $8 + local.get $5 + f64.const 0.13046826811283835 + f64.mul + f64.const -0.14483316576701266 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.add + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $1 + i64.const 48 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 16 + i32.sub + i32.const 32736 + i32.ge_u + if + f64.const -1 + local.get $0 + local.get $0 + f64.mul + f64.div + local.get $1 + i64.const 1 + i64.shl + i64.eqz + br_if $~lib/util/math/log2_lut|inlined.0 + drop + local.get $0 + local.get $1 + i64.const 9218868437227405312 + i64.eq + br_if $~lib/util/math/log2_lut|inlined.0 + drop + i32.const 1 + local.get $2 + i32.const 32752 + i32.and + i32.const 32752 + i32.eq + local.get $2 + i32.const 32768 + i32.and + select + if + local.get $0 + local.get $0 + f64.sub + local.tee $0 + local.get $0 + f64.div + br $~lib/util/math/log2_lut|inlined.0 + end + local.get $0 + f64.const 4503599627370496 + f64.mul + i64.reinterpret_f64 + i64.const 234187180623265792 + i64.sub + local.set $1 + end + local.get $1 + i64.const 4604367669032910848 + i64.sub + local.tee $3 + i64.const 46 + i64.shr_u + i64.const 63 + i64.and + i32.wrap_i64 + i32.const 4 + i32.shl + local.tee $2 + i32.const 7968 + i32.add + local.set $10 + local.get $3 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.get $10 + f64.load offset=8 + f64.add + local.tee $0 local.get $1 + local.get $3 + i64.const -4503599627370496 + i64.and + i64.sub + f64.reinterpret_i64 + local.get $2 + i32.const 8992 + i32.add + local.tee $2 + f64.load + f64.sub + local.get $2 + f64.load offset=8 + f64.sub + local.get $10 + f64.load + f64.mul + local.tee $4 + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $5 + f64.const 1.4426950407214463 + f64.mul + local.tee $6 + f64.add + local.set $7 + local.get $0 + local.get $7 + f64.sub + local.get $6 + f64.add + local.get $4 + local.get $5 + f64.sub + f64.const 1.4426950407214463 + f64.mul + local.get $4 + f64.const 1.6751713164886512e-10 + f64.mul + f64.add + f64.add + local.get $4 + local.get $4 f64.mul local.tee $0 + local.get $4 + f64.const 0.4808983469629985 + f64.mul + f64.const -0.7213475204444882 + f64.add local.get $0 - f64.div - return - end - local.get $6 - i64.const 1 - i64.shl - i64.eqz - if + local.get $4 + f64.const 0.2885390073180969 + f64.mul + f64.const -0.36067375954075914 + f64.add + f64.mul + f64.add local.get $0 - return + local.get $0 + f64.mul + local.get $4 + f64.const 0.2061202382173603 + f64.mul + f64.const -0.2404693555628422 + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.get $7 + f64.add end - local.get $3 - i64.eqz - if (result i64) - local.get $6 - i64.const 1 - local.get $3 - local.get $6 - i64.const 12 - i64.shl - i64.clz - i64.sub + ) + (func $std/math/test_log2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + block $~lib/util/math/log2f_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 local.tee $3 - i64.sub - i64.shl - else + i32.const 8388608 + i32.sub + i32.const 2130706432 + i32.ge_u + if + f32.const -inf + local.get $3 + i32.const 1 + i32.shl + local.tee $6 + i32.eqz + br_if $~lib/util/math/log2f_lut|inlined.0 + drop + local.get $0 + local.get $3 + i32.const 2139095040 + i32.eq + br_if $~lib/util/math/log2f_lut|inlined.0 + drop + local.get $3 + i32.const 31 + i32.shr_u + local.get $6 + i32.const -16777216 + i32.ge_u + i32.or + if + local.get $0 + local.get $0 + f32.sub + local.tee $0 + local.get $0 + f32.div + br $~lib/util/math/log2f_lut|inlined.0 + end + local.get $0 + f32.const 8388608 + f32.mul + i32.reinterpret_f32 + i32.const 192937984 + i32.sub + local.set $3 + end + local.get $3 + i32.const 1060306944 + i32.sub + local.tee $6 + i32.const 19 + i32.shr_u + i32.const 15 + i32.and + i32.const 4 + i32.shl + i32.const 10016 + i32.add + local.set $7 + local.get $3 local.get $6 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $2 - local.get $4 - i64.eqz - if (result i64) - local.get $7 - i64.const 1 - local.get $4 + i32.const -8388608 + i32.and + i32.sub + f32.reinterpret_i32 + f64.promote_f32 local.get $7 - i64.const 12 - i64.shl - i64.clz - i64.sub + f64.load + f64.mul + f64.const -1 + f64.add local.tee $4 - i64.sub - i64.shl - else + local.get $4 + f64.mul + local.set $5 + local.get $4 + f64.const 0.4811247078767291 + f64.mul + f64.const -0.7213476299867769 + f64.add + local.get $5 + f64.const -0.36051725506874704 + f64.mul + f64.add + local.get $5 + f64.mul + local.get $4 + f64.const 1.4426950186867042 + f64.mul local.get $7 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or + f64.load offset=8 + local.get $6 + i32.const 23 + i32.shr_s + f64.convert_i32_s + f64.add + f64.add + f64.add + f32.demote_f64 end - local.set $7 - block $do-break|0 + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 f32) + (local $10 f32) + block $__inlined_func$~lib/math/NativeMathf.log10$25 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.tee $4 local.get $3 - local.get $4 - i64.lt_s + i32.const 8388608 + i32.lt_u + i32.or if + f32.const -1 + local.get $0 + local.get $0 + f32.mul + f32.div local.get $3 - i64.const 1 - i64.add + i32.const 1 + i32.shl + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop + local.get $0 + local.get $0 + f32.sub + f32.const 0 + f32.div local.get $4 - i64.eq - br_if $do-break|0 + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop + i32.const -25 + local.set $6 local.get $0 - return - end - loop $while-continue|1 + f32.const 33554432 + f32.mul + i32.reinterpret_f32 + local.set $3 + else local.get $3 - local.get $4 - i64.gt_s + i32.const 2139095040 + i32.ge_u if - local.get $2 - local.get $7 - i64.ge_u - if (result i64) - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $2 - local.get $7 - i64.sub - else - local.get $2 - end - i64.const 1 - i64.shl - local.set $2 - local.get $5 - i32.const 1 - i32.shl - local.set $5 + local.get $0 + br $__inlined_func$~lib/math/NativeMathf.log10$25 + else + f32.const 0 local.get $3 - i64.const 1 - i64.sub - local.set $3 - br $while-continue|1 + i32.const 1065353216 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.log10$25 + drop end end - local.get $2 + local.get $3 + i32.const 4913933 + i32.add + local.tee $3 + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + f32.reinterpret_i32 + f32.const -1 + f32.add + local.tee $8 + local.get $8 + f32.const 2 + f32.add + f32.div + local.tee $0 + local.get $0 + f32.mul + local.tee $5 + local.get $5 + f32.mul + local.set $9 + local.get $6 + local.get $3 + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + i32.add + f32.convert_i32_s + local.tee $7 + f32.const 7.903415166765626e-07 + f32.mul + local.get $8 + local.get $8 + local.get $8 + f32.const 0.5 + f32.mul + local.get $8 + f32.mul + local.tee $8 + f32.sub + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $10 + f32.sub + local.get $8 + f32.sub + local.get $0 + local.get $8 + local.get $5 + local.get $9 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $9 + local.get $9 + f32.const 0.24279078841209412 + f32.mul + f32.const 0.40000972151756287 + f32.add + f32.mul + f32.add + f32.add + f32.mul + f32.add + local.tee $0 + local.get $10 + f32.add + f32.const -3.168997136526741e-05 + f32.mul + f32.add + local.get $0 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $10 + f32.const 0.434326171875 + f32.mul + f32.add local.get $7 - i64.ge_u + f32.const 0.3010292053222656 + f32.mul + f32.add + end + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + block $__inlined_func$~lib/math/NativeMath.log10$1 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.tee $6 + local.get $3 + i32.const 1048576 + i32.lt_u + i32.or if - local.get $5 - i32.const 1 - i32.add + f64.const -1 + local.get $0 + local.get $0 + f64.mul + f64.div + local.get $4 + i64.const 1 + i64.shl + i64.eqz + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.div + local.get $6 + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop + i32.const -54 local.set $5 - local.get $2 - local.get $7 - i64.sub - local.set $2 - end - local.get $2 - i64.eqz - if - i64.const -60 + local.get $0 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 local.set $3 else local.get $3 - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.tee $7 - i64.sub - local.set $3 - local.get $2 - local.get $7 - i64.shl - local.set $2 - end - end - local.get $1 - f64.abs - local.set $1 - local.get $3 - i64.const 0 - i64.gt_s - if (result i64) - local.get $2 - i64.const 4503599627370496 - i64.sub + i32.const 2146435072 + i32.ge_u + if + local.get $0 + br $__inlined_func$~lib/math/NativeMath.log10$1 + else + f64.const 0 + local.get $4 + i64.const 32 + i64.shl + i64.eqz + local.get $3 + i32.const 1072693248 + i32.eq + i32.and + br_if $__inlined_func$~lib/math/NativeMath.log10$1 + drop + end + end + local.get $4 + i64.const 4294967295 + i64.and local.get $3 - i64.const 52 + i32.const 614242 + i32.add + local.tee $3 + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + i64.extend_i32_u + i64.const 32 i64.shl i64.or - else - local.get $2 - i64.const 1 + f64.reinterpret_i64 + f64.const -1 + f64.add + local.tee $7 + f64.const 0.5 + f64.mul + local.get $7 + f64.mul + local.set $8 + local.get $7 + local.get $7 + f64.const 2 + f64.add + f64.div + local.tee $9 + local.get $9 + f64.mul + local.tee $10 + local.get $10 + f64.mul + local.set $11 + local.get $7 + local.get $7 + local.get $8 + f64.sub + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $12 + f64.sub + local.get $8 + f64.sub + local.get $9 + local.get $8 + local.get $10 + local.get $11 + local.get $11 + local.get $11 + f64.const 0.14798198605116586 + f64.mul + f64.const 0.1818357216161805 + f64.add + f64.mul + f64.const 0.2857142874366239 + f64.add + f64.mul + f64.const 0.6666666666666735 + f64.add + f64.mul + local.get $11 + local.get $11 + local.get $11 + f64.const 0.15313837699209373 + f64.mul + f64.const 0.22222198432149784 + f64.add + f64.mul + f64.const 0.3999999999940942 + f64.add + f64.mul + f64.add + f64.add + f64.mul + f64.add + local.set $8 + local.get $5 local.get $3 - i64.sub - i64.shr_u + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + i32.add + f64.convert_i32_s + local.tee $9 + f64.const 0.30102999566361177 + f64.mul + local.tee $10 + local.get $12 + f64.const 0.4342944818781689 + f64.mul + local.tee $11 + f64.add + local.set $7 + local.get $9 + f64.const 3.694239077158931e-13 + f64.mul + local.get $8 + local.get $12 + f64.add + f64.const 2.5082946711645275e-11 + f64.mul + f64.add + local.get $8 + f64.const 0.4342944818781689 + f64.mul + f64.add + local.get $10 + local.get $7 + f64.sub + local.get $11 + f64.add + f64.add + local.get $7 + f64.add end - f64.reinterpret_i64 - local.tee $0 - local.get $0 - f64.add - local.set $8 - local.get $0 local.get $1 - f64.sub - local.get $0 - local.get $3 - local.get $4 - i64.eq + local.get $2 + call $std/math/check if (result i32) - i32.const 1 + local.get $0 + call $~lib/bindings/dom/Math.log10 + local.get $1 + local.get $2 + call $std/math/check else + i32.const 0 + end + ) + (func $std/math/test_acoshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + block $__inlined_func$~lib/math/NativeMathf.acosh$9 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 2147483647 + i32.and + i32.const 1073741824 + i32.lt_u + if + local.get $0 + f32.const -1 + f32.add + local.tee $0 + local.get $0 + local.get $0 + f32.const 2 + f32.add + f32.mul + f32.sqrt + f32.add + call $~lib/math/NativeMathf.log1p + br $__inlined_func$~lib/math/NativeMathf.acosh$9 + end local.get $3 - i64.const 1 - i64.add - local.get $4 - i64.eq - if (result i32) - local.get $5 - i32.const 1 - i32.and - local.get $1 - local.get $8 - f64.eq - i32.and - local.get $1 - local.get $8 - f64.lt - i32.or - else - i32.const 0 + i32.const 1166016512 + i32.lt_u + if + local.get $0 + local.get $0 + f32.add + f32.const 1 + local.get $0 + local.get $0 + local.get $0 + f32.mul + f32.const -1 + f32.add + f32.sqrt + f32.add + f32.div + f32.sub + call $~lib/math/NativeMathf.log + br $__inlined_func$~lib/math/NativeMathf.acosh$9 end + local.get $0 + call $~lib/math/NativeMathf.log + f32.const 0.6931471824645996 + f32.add end - select - local.tee $0 - f64.neg - local.get $0 - local.get $6 - i64.const 0 - i64.lt_s - select + local.get $1 + local.get $2 + call $std/math/check ) - (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) + (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - local.get $1 - i32.reinterpret_f32 - local.tee $7 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $4 - local.get $7 - i32.const 1 - i32.shl - i32.eqz + (local $4 f32) local.get $0 i32.reinterpret_f32 - local.tee $6 - i32.const 23 - i32.shr_u - i32.const 255 + i32.const 2147483647 i32.and local.tee $3 - i32.const 255 - i32.eq - i32.or - local.get $1 - local.get $1 - f32.ne - i32.or - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - local.get $6 - i32.const 1 - i32.shl - i32.eqz - if - local.get $0 - return - end + f32.reinterpret_i32 + local.set $4 local.get $3 - if (result i32) - local.get $6 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $6 - i32.const 1 + i32.const 1057791828 + i32.gt_u + if (result f32) local.get $3 - local.get $6 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $3 - i32.sub - i32.shl - end - local.set $2 - local.get $4 - if (result i32) - local.get $7 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or + i32.const 1092616192 + i32.gt_u + if (result f32) + f32.const 0 + local.get $4 + f32.div + f32.const 1 + f32.add + else + f32.const 1 + f32.const 2 + local.get $4 + local.get $4 + f32.add + call $~lib/math/NativeMathf.expm1 + f32.const 2 + f32.add + f32.div + f32.sub + end else - local.get $7 - i32.const 1 - local.get $4 - local.get $7 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $4 - i32.sub - i32.shl - end - local.set $7 - block $do-break|0 local.get $3 - local.get $4 - i32.lt_s - if - local.get $3 - i32.const 1 - i32.add + i32.const 1048757624 + i32.gt_u + if (result f32) local.get $4 - i32.eq - br_if $do-break|0 - local.get $0 - return - end - loop $while-continue|1 - local.get $3 local.get $4 - i32.gt_s - if - local.get $2 - local.get $7 - i32.ge_u - if (result i32) - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $2 - local.get $7 - i32.sub - else - local.get $2 - end - i32.const 1 - i32.shl - local.set $2 - local.get $5 - i32.const 1 - i32.shl - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 + f32.add + call $~lib/math/NativeMathf.expm1 + local.tee $4 + local.get $4 + f32.const 2 + f32.add + f32.div + else + local.get $3 + i32.const 8388608 + i32.ge_u + if (result f32) + local.get $4 + f32.const -2 + f32.mul + call $~lib/math/NativeMathf.expm1 + local.tee $4 + f32.neg + local.get $4 + f32.const 2 + f32.add + f32.div + else + local.get $4 end end - local.get $2 - local.get $7 - i32.ge_u - if + end + local.get $0 + f32.copysign + local.get $1 + local.get $2 + call $std/math/check + ) + (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + f64.reinterpret_i64 + local.set $5 + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 1071748074 + i32.gt_u + if (result f64) + local.get $3 + i32.const 1077149696 + i32.gt_u + if (result f64) + f64.const 1 + f64.const 0 local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $2 - local.get $7 - i32.sub - local.set $2 + f64.div + f64.sub + else + f64.const 1 + f64.const 2 + local.get $5 + local.get $5 + f64.add + call $~lib/math/NativeMath.expm1 + f64.const 2 + f64.add + f64.div + f64.sub end - local.get $2 - if - local.get $3 - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $7 - i32.sub - local.set $3 - local.get $2 - local.get $7 - i32.shl - local.set $2 + else + local.get $3 + i32.const 1070618798 + i32.gt_u + if (result f64) + local.get $5 + local.get $5 + f64.add + call $~lib/math/NativeMath.expm1 + local.tee $5 + local.get $5 + f64.const 2 + f64.add + f64.div else - i32.const -30 - local.set $3 + local.get $3 + i32.const 1048576 + i32.ge_u + if (result f64) + local.get $5 + f64.const -2 + f64.mul + call $~lib/math/NativeMath.expm1 + local.tee $5 + f64.neg + local.get $5 + f64.const 2 + f64.add + f64.div + else + local.get $5 + end end end + local.get $0 + f64.copysign local.get $1 - f32.abs - local.set $1 - local.get $3 - i32.const 0 - i32.gt_s + local.get $2 + call $std/math/check if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.tanh + local.get $1 local.get $2 - i32.const 8388608 - i32.sub - local.get $3 - i32.const 23 - i32.shl - i32.or + call $std/math/check else - local.get $2 - i32.const 1 - local.get $3 - i32.sub - i32.shr_u + i32.const 0 end - f32.reinterpret_i32 - local.tee $0 - local.get $0 - f32.add - local.set $8 + ) + (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 f32) + (local $4 i32) + (local $5 f32) local.get $0 - local.get $1 - f32.sub + i32.reinterpret_f32 + i32.const 2147483647 + i32.and + local.tee $4 + f32.reinterpret_i32 + local.set $5 + f32.const 0.5 local.get $0 - local.get $3 - local.get $4 - i32.eq - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 1 - i32.add + f32.copysign + local.set $3 + block $__inlined_func$~lib/math/NativeMathf.sinh$36 local.get $4 - i32.eq - if (result i32) + i32.const 1118925335 + i32.lt_u + if local.get $5 - i32.const 1 - i32.and - local.get $1 - local.get $8 - f32.eq - i32.and - local.get $1 - local.get $8 - f32.lt - i32.or - else - i32.const 0 + call $~lib/math/NativeMathf.expm1 + local.set $5 + local.get $4 + i32.const 1065353216 + i32.lt_u + if + local.get $4 + i32.const 964689920 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMathf.sinh$36 + local.get $3 + local.get $5 + local.get $5 + f32.add + local.get $5 + local.get $5 + f32.mul + local.get $5 + f32.const 1 + f32.add + f32.div + f32.sub + f32.mul + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.sinh$36 + end + local.get $3 + local.get $5 + local.get $5 + local.get $5 + f32.const 1 + f32.add + f32.div + f32.add + f32.mul + local.set $0 + br $__inlined_func$~lib/math/NativeMathf.sinh$36 end + local.get $5 + f32.const -162.88958740234375 + f32.add + call $~lib/math/NativeMathf.exp + local.get $3 + local.get $3 + f32.add + f32.const 1661534994731144841129758e11 + f32.mul + f32.mul + f32.const 1661534994731144841129758e11 + f32.mul + local.set $0 end - select - local.tee $0 - f32.neg local.get $0 - local.get $6 - i32.const 0 - i32.lt_s - select + local.get $1 + local.get $2 + call $std/math/check ) - (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) - (local $1 f64) - (local $2 f64) - (local $3 i32) + (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) (local $4 i32) (local $5 i64) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 f64) + (local $6 f64) local.get $0 i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 31 - i32.shr_u + f64.reinterpret_i64 local.set $6 - local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1072243195 - i32.le_u - if - local.get $3 - i32.const 1045430272 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $1 - local.get $0 - f64.mul - local.get $1 - local.get $1 - local.get $1 - f64.const 2.7557313707070068e-06 - f64.mul - f64.const -1.984126982985795e-04 - f64.add - f64.mul - f64.const 0.00833333333332249 - f64.add - local.get $1 - local.get $1 - local.get $1 - f64.mul - f64.mul - local.get $1 - f64.const 1.58969099521155e-10 - f64.mul - f64.const -2.5050760253406863e-08 - f64.add - f64.mul - f64.add - f64.mul - f64.const -0.16666666666666632 - f64.add - f64.mul - f64.add - return - end - local.get $3 - i32.const 2146435072 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - return - end - block $~lib/math/rempio2|inlined.1 (result i32) + f64.const 0.5 + local.get $0 + f64.copysign + local.set $3 + block $__inlined_func$~lib/math/NativeMath.sinh$35 (result f64) local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 - i32.const 2147483647 - i32.and local.tee $4 - i32.const 1073928572 + i32.const 1082535490 i32.lt_u if - i32.const 1 - local.set $3 local.get $6 - if (result f64) - local.get $0 - f64.const 1.5707963267341256 - f64.add - local.set $0 - i32.const -1 - local.set $3 - local.get $4 - i32.const 1073291771 - i32.ne - if (result f64) - local.get $0 - local.get $0 - f64.const 6.077100506506192e-11 - f64.add - local.tee $0 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - else - local.get $0 - f64.const 6.077100506303966e-11 - f64.add - local.tee $1 - f64.const 2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - end - else - local.get $0 - f64.const -1.5707963267341256 - f64.add - local.set $0 - local.get $4 - i32.const 1073291771 - i32.ne - if (result f64) - local.get $0 - local.get $0 - f64.const -6.077100506506192e-11 - f64.add - local.tee $0 - f64.sub - f64.const -6.077100506506192e-11 - f64.add - else - local.get $0 - f64.const -6.077100506303966e-11 - f64.add - local.tee $1 - f64.const -2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const -2.0222662487959506e-21 - f64.add - end - end - local.get $0 - global.set $~lib/math/rempio2_y0 - global.set $~lib/math/rempio2_y1 - local.get $3 - br $~lib/math/rempio2|inlined.1 - end - local.get $4 - i32.const 1094263291 - i32.lt_u - if + call $~lib/math/NativeMath.expm1 + local.set $6 local.get $4 - i32.const 20 - i32.shr_u - local.tee $3 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $7 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $7 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $2 - f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u + i32.const 1072693248 + i32.lt_u if - local.get $7 - f64.const 2.0222662487959506e-21 - f64.mul local.get $0 - local.get $0 - local.get $7 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $2 + local.get $4 + i32.const 1045430272 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMath.sinh$35 + drop local.get $3 - local.get $0 - local.get $2 + local.get $6 + local.get $6 + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $6 + f64.const 1 + f64.add + f64.div f64.sub - local.tee $1 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if - local.get $7 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $7 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $2 - local.get $0 - local.get $2 - f64.sub - local.set $1 - end + f64.mul + br $__inlined_func$~lib/math/NativeMath.sinh$35 end - local.get $1 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $1 - f64.sub - local.get $2 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $7 - i32.trunc_sat_f64_s - br $~lib/math/rempio2|inlined.1 - end - i32.const 0 - local.get $5 - call $~lib/math/pio2_large_quot - local.tee $3 - i32.sub - local.get $3 - local.get $6 - select - end - local.set $3 - global.get $~lib/math/rempio2_y0 - local.set $2 - global.get $~lib/math/rempio2_y1 - local.set $7 - local.get $3 - i32.const 1 - i32.and - if (result f64) - local.get $2 - local.get $2 - f64.mul - local.tee $0 - local.get $0 - f64.mul - local.set $1 - f64.const 1 - local.get $0 - f64.const 0.5 - f64.mul - local.tee $8 - f64.sub - local.tee $9 - f64.const 1 - local.get $9 - f64.sub - local.get $8 - f64.sub - local.get $0 - local.get $0 - local.get $0 - local.get $0 - f64.const 2.480158728947673e-05 - f64.mul - f64.const -0.001388888888887411 - f64.add - f64.mul - f64.const 0.0416666666666666 - f64.add - f64.mul - local.get $1 - local.get $1 - f64.mul - local.get $0 - local.get $0 - f64.const -1.1359647557788195e-11 - f64.mul - f64.const 2.087572321298175e-09 - f64.add - f64.mul - f64.const -2.7557314351390663e-07 - f64.add - f64.mul - f64.add - f64.mul - local.get $2 - local.get $7 - f64.mul - f64.sub - f64.add - f64.add - else - local.get $2 - local.get $2 - f64.mul - local.tee $0 - local.get $2 - f64.mul - local.set $1 - local.get $2 - local.get $0 - local.get $7 - f64.const 0.5 - f64.mul - local.get $1 - local.get $0 - local.get $0 - f64.const 2.7557313707070068e-06 - f64.mul - f64.const -1.984126982985795e-04 - f64.add - f64.mul - f64.const 0.00833333333332249 + local.get $3 + local.get $6 + local.get $6 + local.get $6 + f64.const 1 + f64.add + f64.div + f64.add + f64.mul + br $__inlined_func$~lib/math/NativeMath.sinh$35 + end + local.get $6 + f64.const -1416.0996898839683 f64.add - local.get $0 - local.get $0 - local.get $0 - f64.mul - f64.mul - local.get $0 - f64.const 1.58969099521155e-10 - f64.mul - f64.const -2.5050760253406863e-08 + call $~lib/math/NativeMath.exp + local.get $3 + local.get $3 f64.add + f64.const 2247116418577894884661631e283 f64.mul - f64.add f64.mul - f64.sub + f64.const 2247116418577894884661631e283 f64.mul - local.get $7 - f64.sub + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.sinh local.get $1 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub + local.get $2 + call $std/math/check + else + i32.const 0 end - local.tee $0 - f64.neg - local.get $0 - local.get $3 - i32.const 2 - i32.and - select ) - (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) + (func $std/math/test_coshf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) - (local $4 f64) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) local.get $0 i32.reinterpret_f32 + i32.const 2147483647 + i32.and local.tee $3 - i32.const 31 - i32.shr_u - local.set $6 - block $folding-inner0 + f32.reinterpret_i32 + local.set $0 + block $__inlined_func$~lib/math/NativeMathf.cosh$21 (result f32) local.get $3 - i32.const 2147483647 - i32.and - local.tee $3 - i32.const 1061752794 - i32.le_u + i32.const 1060205079 + i32.lt_u if + f32.const 1 local.get $3 i32.const 964689920 i32.lt_u - if - local.get $0 - return - end + br_if $__inlined_func$~lib/math/NativeMathf.cosh$21 + drop local.get $0 - f64.promote_f32 - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $4 - br $folding-inner0 - end - local.get $3 - i32.const 1081824209 - i32.le_u - if - local.get $3 - i32.const 1075235811 - i32.le_u - if - local.get $6 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - f32.neg - else - local.get $0 - f64.promote_f32 - f64.const -1.5707963267948966 - f64.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - end - return - end + call $~lib/math/NativeMathf.expm1 + local.tee $0 local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const -3.141592653589793 - f64.add - local.get $6 - select - f64.neg - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $4 - br $folding-inner0 - end - local.get $3 - i32.const 1088565717 - i32.le_u - if - local.get $3 - i32.const 1085271519 - i32.le_u - if - local.get $6 - if (result f32) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $0 - f64.promote_f32 - f64.const -4.71238898038469 - f64.add - local.tee $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - f32.neg - end - return - end + f32.mul local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const -6.283185307179586 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $2 - f64.mul - local.set $4 - br $folding-inner0 + local.get $0 + f32.add + f32.const 2 + f32.add + f32.div + f32.const 1 + f32.add + br $__inlined_func$~lib/math/NativeMathf.cosh$21 end local.get $3 - i32.const 2139095040 - i32.ge_u + i32.const 1118925335 + i32.lt_u if local.get $0 + call $~lib/math/NativeMathf.exp + local.tee $0 + f32.const 0.5 + f32.mul + f32.const 0.5 local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $3 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $2 - local.get $1 - local.get $2 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $2 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $2 - i32.trunc_sat_f64_s - br $~lib/math/rempio2f|inlined.1 - end - local.get $3 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $7 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $8 - local.get $7 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $7 - i64.load offset=8 - local.set $5 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - i64.load - local.get $8 - i64.shl - local.get $5 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - i64.const 32 - i64.gt_u - if (result i64) - local.get $5 - local.get $8 - i64.const 32 - i64.sub - i64.shl - local.get $7 - i64.load offset=16 - i64.const 96 - local.get $8 - i64.sub - i64.shr_u - i64.or - else - local.get $5 - i64.const 32 - local.get $8 - i64.sub - i64.shr_u - end - local.get $9 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $5 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $3 - i32.sub - local.get $3 - local.get $6 - select - end - local.set $3 - global.get $~lib/math/rempio2f_y - local.set $1 - local.get $3 - i32.const 1 - i32.and - if (result f32) - local.get $1 - local.get $1 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $2 - local.get $1 - f64.const -0.499999997251031 - f64.mul - f64.const 1 - f64.add - local.get $2 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $2 - local.get $1 - f64.mul - local.get $1 - f64.const 2.439044879627741e-05 - f64.mul - f64.const -0.001388676377460993 - f64.add - f64.mul - f64.add - f32.demote_f64 - else - local.get $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - local.get $1 - f64.mul - local.tee $1 - local.get $2 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $1 - local.get $2 - local.get $2 - f64.mul - f64.mul - local.get $2 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 - f64.add - f64.mul - f64.add - f32.demote_f64 + f32.div + f32.add + br $__inlined_func$~lib/math/NativeMathf.cosh$21 end - local.tee $0 - f32.neg local.get $0 - local.get $3 - i32.const 2 - i32.and - select - return - end - local.get $2 - local.get $4 - local.get $1 - f64.const 0.008333329385889463 - f64.mul - f64.const -0.16666666641626524 - f64.add - f64.mul - f64.add - local.get $4 - local.get $1 - local.get $1 - f64.mul - f64.mul + f32.const -162.88958740234375 + f32.add + call $~lib/math/NativeMathf.exp + f32.const 1661534994731144841129758e11 + f32.mul + f32.const 1661534994731144841129758e11 + f32.mul + end local.get $1 - f64.const 2.718311493989822e-06 - f64.mul - f64.const -1.9839334836096632e-04 - f64.add - f64.mul - f64.add - f32.demote_f64 + local.get $2 + call $std/math/check ) - (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) - (local $6 f64) - block $__inlined_func$~lib/math/NativeMath.sinh$35 (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $5 - f64.reinterpret_i64 - local.set $6 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $3 - local.get $5 + (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + f64.reinterpret_i64 + local.set $5 + block $__inlined_func$~lib/math/NativeMath.cosh$20 (result f64) + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 - i32.const 1082535490 + local.tee $3 + i32.const 1072049730 i32.lt_u if - local.get $6 - call $~lib/math/NativeMath.expm1 - local.set $6 - local.get $4 - i32.const 1072693248 - i32.lt_u - if - local.get $0 - local.get $4 - i32.const 1045430272 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMath.sinh$35 - drop - local.get $3 - local.get $6 - local.get $6 - f64.add - local.get $6 - local.get $6 - f64.mul - local.get $6 - f64.const 1 - f64.add - f64.div - f64.sub - f64.mul - br $__inlined_func$~lib/math/NativeMath.sinh$35 - end + f64.const 1 local.get $3 - local.get $6 - local.get $6 - local.get $6 + i32.const 1045430272 + i32.lt_u + br_if $__inlined_func$~lib/math/NativeMath.cosh$20 + drop + local.get $5 + call $~lib/math/NativeMath.expm1 + local.tee $5 + local.get $5 + f64.mul + local.get $5 + local.get $5 + f64.add + f64.const 2 + f64.add + f64.div f64.const 1 f64.add + br $__inlined_func$~lib/math/NativeMath.cosh$20 + end + local.get $3 + i32.const 1082535490 + i32.lt_u + if + local.get $5 + call $~lib/math/NativeMath.exp + local.tee $5 + f64.const 1 + local.get $5 f64.div f64.add + f64.const 0.5 f64.mul - br $__inlined_func$~lib/math/NativeMath.sinh$35 + br $__inlined_func$~lib/math/NativeMath.cosh$20 end - local.get $6 + local.get $5 f64.const -1416.0996898839683 f64.add call $~lib/math/NativeMath.exp - local.get $3 - local.get $3 - f64.add f64.const 2247116418577894884661631e283 f64.mul - f64.mul f64.const 2247116418577894884661631e283 f64.mul end @@ -10072,7 +10468,7 @@ call $std/math/check if (result i32) local.get $0 - call $~lib/bindings/dom/Math.sinh + call $~lib/bindings/dom/Math.cosh local.get $1 local.get $2 call $std/math/check @@ -10080,332 +10476,318 @@ i32.const 0 end ) - (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) - (local $5 f32) + (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 f32) local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 f32.reinterpret_i32 - local.set $5 - f32.const 0.5 - local.get $0 - f32.copysign - local.set $3 - block $__inlined_func$~lib/math/NativeMathf.sinh$36 + local.set $4 + local.get $3 + i32.const 1166016512 + i32.ge_u + if (result f32) local.get $4 - i32.const 1118925335 - i32.lt_u - if - local.get $5 - call $~lib/math/NativeMathf.expm1 - local.set $5 + call $~lib/math/NativeMathf.log + f32.const 0.6931471824645996 + f32.add + else + local.get $3 + i32.const 1073741824 + i32.ge_u + if (result f32) local.get $4 - i32.const 1065353216 - i32.lt_u - if + local.get $4 + f32.add + f32.const 1 + local.get $4 + local.get $4 + f32.mul + f32.const 1 + f32.add + f32.sqrt + local.get $4 + f32.add + f32.div + f32.add + call $~lib/math/NativeMathf.log + else + local.get $3 + i32.const 964689920 + i32.ge_u + if (result f32) + local.get $4 + local.get $4 local.get $4 - i32.const 964689920 - i32.lt_u - br_if $__inlined_func$~lib/math/NativeMathf.sinh$36 - local.get $3 - local.get $5 - local.get $5 - f32.add - local.get $5 - local.get $5 f32.mul - local.get $5 + local.tee $4 + local.get $4 + f32.const 1 + f32.add + f32.sqrt f32.const 1 f32.add f32.div - f32.sub - f32.mul - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.sinh$36 + f32.add + call $~lib/math/NativeMathf.log1p + else + local.get $4 end - local.get $3 - local.get $5 - local.get $5 - local.get $5 - f32.const 1 - f32.add - f32.div - f32.add - f32.mul - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.sinh$36 end - local.get $5 - f32.const -162.88958740234375 - f32.add - call $~lib/math/NativeMathf.exp - local.get $3 - local.get $3 - f32.add - f32.const 1661534994731144841129758e11 - f32.mul - f32.mul - f32.const 1661534994731144841129758e11 - f32.mul - local.set $0 end local.get $0 + f32.copysign local.get $1 local.get $2 call $std/math/check ) - (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 i32) - (local $4 i32) + (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i64) + (local $4 i64) (local $5 f64) - (local $6 f64) - (local $7 f64) local.get $0 i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 2147483647 - i32.and - i32.const 1072010280 - i32.ge_u local.tee $4 - if - f64.const 0.7853981633974483 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $3 + local.get $4 + i64.const 9223372036854775807 + i64.and + f64.reinterpret_i64 + local.set $5 + local.get $3 + i64.const 1049 + i64.ge_u + if (result f64) + local.get $5 + call $~lib/math/NativeMath.log + f64.const 0.6931471805599453 + f64.add + else local.get $3 - i32.const 0 - i32.lt_s + i64.const 1024 + i64.ge_u if (result f64) - local.get $1 - f64.neg - local.set $1 - local.get $0 - f64.neg + local.get $5 + local.get $5 + f64.add + f64.const 1 + local.get $5 + local.get $5 + f64.mul + f64.const 1 + f64.add + f64.sqrt + local.get $5 + f64.add + f64.div + f64.add + call $~lib/math/NativeMath.log else - local.get $0 + local.get $3 + i64.const 997 + i64.ge_u + if (result f64) + local.get $5 + local.get $5 + local.get $5 + f64.mul + local.tee $5 + local.get $5 + f64.const 1 + f64.add + f64.sqrt + f64.const 1 + f64.add + f64.div + f64.add + call $~lib/math/NativeMath.log1p + else + local.get $5 + end end - f64.sub - f64.const 3.061616997868383e-17 - local.get $1 - f64.sub - f64.add - local.set $0 - f64.const 0 - local.set $1 end local.get $0 - local.get $0 - f64.mul - local.tee $5 - local.get $5 - f64.mul - local.set $6 - local.get $0 + f64.copysign local.get $1 - local.get $5 - local.get $5 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.asinh + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) + (local $2 i32) + (local $3 i64) + (local $4 f64) + (local $5 i64) local.get $0 - f64.mul - local.tee $7 - local.get $6 - local.get $6 - local.get $6 - local.get $6 - local.get $6 - f64.const -1.8558637485527546e-05 - f64.mul - f64.const 7.817944429395571e-05 - f64.add - f64.mul - f64.const 5.880412408202641e-04 - f64.add - f64.mul - f64.const 3.5920791075913124e-03 - f64.add - f64.mul - f64.const 0.021869488294859542 - f64.add - f64.mul - f64.const 0.13333333333320124 - f64.add - local.get $5 - local.get $6 - local.get $6 - local.get $6 - local.get $6 - local.get $6 - f64.const 2.590730518636337e-05 - f64.mul - f64.const 7.140724913826082e-05 - f64.add - f64.mul - f64.const 2.464631348184699e-04 - f64.add - f64.mul - f64.const 1.4562094543252903e-03 - f64.add - f64.mul - f64.const 0.0088632398235993 - f64.add - f64.mul - f64.const 0.05396825397622605 - f64.add - f64.mul - f64.add - f64.mul local.get $1 f64.add - f64.mul - f64.add - local.get $7 - f64.const 0.3333333333333341 - f64.mul - f64.add - local.tee $1 - f64.add - local.set $5 + local.tee $4 local.get $4 + f64.sub + f64.const 0 + f64.ne if - f64.const 1 - local.get $3 - i32.const 30 - i32.shr_s - i32.const 2 - i32.and - f64.convert_i32_s - f64.sub - local.get $2 - f64.convert_i32_s - local.tee $6 + f64.const 0 + return + end + local.get $0 + i64.reinterpret_f64 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $5 + i64.const 1053 + i64.le_u + if (result i32) local.get $0 + i32.trunc_sat_f64_s + else local.get $5 - local.get $5 - f64.mul - local.get $5 - local.get $6 - f64.add - f64.div - local.get $1 - f64.sub - f64.sub - f64.const 2 - f64.mul - f64.sub - f64.mul - return + i64.const 1106 + i64.le_u + if (result i32) + i32.const 0 + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.get $5 + i64.const 1043 + i64.sub + i64.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.sub + local.get $2 + local.get $3 + i64.const 0 + i64.lt_s + select + else + i32.const 0 + end end - local.get $2 - i32.const 1 - i32.eq - if + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $5 + i64.const 1053 + i64.le_u + if (result i32) + local.get $1 + i32.trunc_sat_f64_s + else local.get $5 - return + i64.const 1106 + i64.le_u + if (result i32) + i32.const 0 + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.get $5 + i64.const 1043 + i64.sub + i64.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.sub + local.get $2 + local.get $3 + i64.const 0 + i64.lt_s + select + else + i32.const 0 + end end - f64.const -1 - local.get $5 - f64.div - local.tee $6 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $7 - local.get $6 - local.get $7 - local.get $5 - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $5 - f64.mul - f64.const 1 - f64.add - local.get $7 - local.get $1 - local.get $5 - local.get $0 - f64.sub - f64.sub - f64.mul - f64.add - f64.mul - f64.add + i32.mul + f64.convert_i32_s ) - (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) + (func $~lib/math/NativeMath.sincos (param $0 f64) (local $1 f64) - (local $2 i32) - (local $3 i64) - (local $4 f64) + (local $2 f64) + (local $3 i32) + (local $4 i64) (local $5 f64) (local $6 i32) - (local $7 i32) local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $4 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $6 i32.const 31 i32.shr_u - local.set $6 - local.get $2 + local.set $3 + local.get $6 i32.const 2147483647 i32.and - local.tee $2 + local.tee $6 i32.const 1072243195 i32.le_u if - local.get $2 - i32.const 1044381696 + local.get $6 + i32.const 1044816030 i32.lt_u if - local.get $0 return end - local.get $0 - f64.const 0 - i32.const 1 - call $~lib/math/tan_kern return end - local.get $2 - i32.const 2146435072 + local.get $6 + i32.const 2139095040 i32.ge_u if - local.get $0 - local.get $0 - f64.sub return end - block $~lib/math/rempio2|inlined.2 - local.get $3 + block $~lib/math/rempio2|inlined.3 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $7 + local.tee $6 i32.const 1073928572 i32.lt_u if - i32.const 1 - local.set $2 - local.get $6 + local.get $3 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add local.set $0 - i32.const -1 - local.set $2 - local.get $7 + local.get $6 i32.const 1073291771 i32.ne if (result f64) @@ -10436,7 +10818,7 @@ f64.const -1.5707963267341256 f64.add local.set $0 - local.get $7 + local.get $6 i32.const 1073291771 i32.ne if (result f64) @@ -10466,30 +10848,30 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - br $~lib/math/rempio2|inlined.2 + br $~lib/math/rempio2|inlined.3 end - local.get $7 + local.get $6 i32.const 1094263291 i32.lt_u if - local.get $7 + local.get $6 i32.const 20 i32.shr_u - local.tee $2 + local.tee $3 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $4 + local.tee $5 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $4 + local.get $5 f64.const 6.077100506506192e-11 f64.mul - local.tee $5 + local.tee $2 f64.sub local.tee $1 i64.reinterpret_f64 @@ -10504,25 +10886,25 @@ i32.const 16 i32.gt_u if - local.get $4 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 + local.get $3 local.get $0 - local.get $4 + local.tee $1 + local.get $5 f64.const 6.077100506303966e-11 f64.mul - local.tee $1 + local.tee $2 f64.sub local.tee $0 - f64.sub + local.get $5 + f64.const 2.0222662487959506e-21 + f64.mul local.get $1 + local.get $0 f64.sub - f64.sub - local.set $5 local.get $2 - local.get $0 - local.get $5 + f64.sub + f64.sub + local.tee $2 f64.sub local.tee $1 i64.reinterpret_f64 @@ -10537,24 +10919,24 @@ i32.const 49 i32.gt_u if - local.get $4 - f64.const 8.4784276603689e-32 - f64.mul local.get $0 - local.get $0 - local.get $4 + local.tee $1 + local.get $5 f64.const 2.0222662487111665e-21 f64.mul - local.tee $1 + local.tee $2 f64.sub local.tee $0 - f64.sub + local.get $5 + f64.const 8.4784276603689e-32 + f64.mul local.get $1 + local.get $0 f64.sub + local.get $2 f64.sub - local.set $5 - local.get $0 - local.get $5 + f64.sub + local.tee $2 f64.sub local.set $1 end @@ -10564,1380 +10946,743 @@ local.get $0 local.get $1 f64.sub - local.get $5 + local.get $2 f64.sub global.set $~lib/math/rempio2_y1 - local.get $4 - i32.trunc_sat_f64_s - local.set $2 - br $~lib/math/rempio2|inlined.2 + br $~lib/math/rempio2|inlined.3 end - i32.const 0 - local.get $3 + local.get $4 call $~lib/math/pio2_large_quot - local.tee $2 - i32.sub - local.get $2 - local.get $6 - select - local.set $2 + drop end global.get $~lib/math/rempio2_y0 - global.get $~lib/math/rempio2_y1 - i32.const 1 - local.get $2 - i32.const 1 - i32.and - i32.const 1 - i32.shl - i32.sub - call $~lib/math/tan_kern + local.tee $0 + local.get $0 + f64.mul + local.set $0 ) - (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) - (local $1 f64) - (local $2 f64) + (func $std/math/test_exp2f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f64) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) + (local $7 f64) local.get $0 - i32.reinterpret_f32 - local.tee $4 - i32.const 31 - i32.shr_u - local.set $6 - block $folding-inner1 - block $folding-inner0 - local.get $4 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1061752794 - i32.le_u - if - local.get $4 - i32.const 964689920 - i32.lt_u - if - local.get $0 - return - end - local.get $0 - f64.promote_f32 - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner0 - end - local.get $4 - i32.const 1081824209 - i32.le_u - if - local.get $4 - i32.const 1075235811 - i32.le_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 1.5707963267948966 - f64.add - local.get $1 - f64.const -1.5707963267948966 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner1 - else - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 3.141592653589793 - f64.add - local.get $1 - f64.const -3.141592653589793 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner0 - end - unreachable - end - local.get $4 - i32.const 1088565717 - i32.le_u - if - local.get $4 - i32.const 1085271519 - i32.le_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 4.71238898038469 - f64.add - local.get $1 - f64.const -4.71238898038469 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner1 - else - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 6.283185307179586 - f64.add - local.get $1 - f64.const -6.283185307179586 - f64.add - local.get $6 - select - local.tee $2 - local.get $2 - f64.mul - local.tee $1 - local.get $1 - f64.mul - local.set $3 - br $folding-inner0 - end - unreachable - end - local.get $4 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f32.sub - return - end - block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $4 - i32.const 1305022427 - i32.lt_u - if - local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.set $2 - local.get $1 - local.get $2 - f64.const 1.5707963109016418 - f64.mul - f64.sub - local.get $2 - f64.const 1.5893254773528196e-08 - f64.mul - f64.sub - global.set $~lib/math/rempio2f_y - local.get $2 - i32.trunc_sat_f64_s - br $~lib/math/rempio2f|inlined.2 - end - local.get $4 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.tee $7 - i32.const 63 - i32.and - i64.extend_i32_s - local.set $8 - local.get $7 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $7 - i64.load offset=8 - local.set $5 - f64.const 8.515303950216386e-20 - local.get $0 - f64.promote_f32 - f64.copysign - local.get $4 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.tee $9 - local.get $7 - i64.load - local.get $8 - i64.shl - local.get $5 - i64.const 64 - local.get $8 - i64.sub - i64.shr_u - i64.or - i64.mul - local.get $8 - i64.const 32 - i64.gt_u - if (result i64) - local.get $5 - local.get $8 - i64.const 32 - i64.sub - i64.shl - local.get $7 - i64.load offset=16 - i64.const 96 - local.get $8 - i64.sub - i64.shr_u - i64.or - else - local.get $5 - i64.const 32 - local.get $8 - i64.sub - i64.shr_u - end - local.get $9 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $5 - i64.const 2 - i64.shl - local.tee $8 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - i32.const 0 - local.get $5 - i64.const 62 - i64.shr_u - local.get $8 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.tee $4 - i32.sub - local.get $4 - local.get $6 - select - end - local.set $4 - global.get $~lib/math/rempio2f_y - local.tee $1 - local.get $1 - f64.mul - local.tee $2 - local.get $2 - f64.mul - local.set $3 - f64.const -1 - local.get $1 - local.get $2 - local.get $1 - f64.mul - local.tee $1 - local.get $2 - f64.const 0.13339200271297674 - f64.mul - f64.const 0.3333313950307914 - f64.add - f64.mul - f64.add - local.get $1 - local.get $3 - f64.mul - local.get $2 - f64.const 0.024528318116654728 - f64.mul - f64.const 0.05338123784456704 - f64.add - local.get $3 - local.get $2 - f64.const 0.009465647849436732 - f64.mul - f64.const 0.002974357433599673 - f64.add - f64.mul - f64.add - f64.mul - f64.add - local.tee $1 - f64.div - local.get $1 - local.get $4 - i32.const 1 - i32.and - select - f32.demote_f64 - return + f64.promote_f32 + local.set $3 + block $~lib/util/math/exp2f_lut|inlined.0 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $5 + i32.const 20 + i32.shr_u + i32.const 2047 + i32.and + local.tee $6 + i32.const 1072 + i32.ge_u + if + f32.const 0 + local.get $5 + i32.const -8388608 + i32.eq + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + local.get $0 + local.get $0 + f32.add + local.get $6 + i32.const 2040 + i32.ge_u + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + local.get $0 + f32.const 1701411834604692317316873e14 + f32.mul + local.get $0 + f32.const 0 + f32.gt + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop + f32.const 0 + local.get $0 + f32.const -150 + f32.le + br_if $~lib/util/math/exp2f_lut|inlined.0 + drop end - local.get $2 - local.get $1 - local.get $2 - f64.mul - local.tee $2 - local.get $1 - f64.const 0.13339200271297674 - f64.mul - f64.const 0.3333313950307914 + local.get $3 + f64.const 211106232532992 + f64.add + local.tee $7 + i64.reinterpret_f64 + local.set $4 + local.get $3 + local.get $7 + f64.const -211106232532992 f64.add + f64.sub + local.tee $3 + f64.const 0.6931471806916203 f64.mul + f64.const 1 f64.add - local.get $2 local.get $3 + f64.const 0.05550361559341535 f64.mul - local.get $1 - f64.const 0.024528318116654728 - f64.mul - f64.const 0.05338123784456704 + f64.const 0.2402284522445722 f64.add local.get $3 - local.get $1 - f64.const 0.009465647849436732 + local.get $3 f64.mul - f64.const 0.002974357433599673 - f64.add f64.mul f64.add + local.get $4 + i32.wrap_i64 + i32.const 31 + i32.and + i32.const 3 + i32.shl + i32.const 7712 + i32.add + i64.load + local.get $4 + i64.const 47 + i64.shl + i64.add + f64.reinterpret_i64 f64.mul - f64.add f32.demote_f64 - return end - f64.const -1 + local.get $1 local.get $2 + call $std/math/check + ) + (func $std/math/test_signf (param $0 f32) (param $1 f32) (result i32) + f32.const 1 + f32.const -1 + local.get $0 + local.get $0 + f32.const 0 + f32.lt + select + local.get $0 + f32.const 0 + f32.gt + select + local.get $1 + f32.const 0 + call $std/math/check + ) + (func $std/math/test_sign (param $0 f64) (param $1 f64) (result i32) + f64.const 1 + f64.const -1 + local.get $0 + local.get $0 + f64.const 0 + f64.lt + select + local.get $0 + f64.const 0 + f64.gt + select + local.get $1 + f64.const 0 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/dom/Math.sign + local.get $1 + f64.const 0 + call $std/math/check + else + i32.const 0 + end + ) + (func $~lib/math/pio2_large_quot (param $0 i64) (result i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 f64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + local.get $0 + i64.const 9223372036854775807 + i64.and + i64.const 52 + i64.shr_u + i64.const 1045 + i64.sub + local.tee $1 + i64.const 63 + i64.and + local.set $6 local.get $1 + i64.const 6 + i64.shr_s + i32.wrap_i64 + i32.const 3 + i32.shl + i32.const 5440 + i32.add + local.tee $4 + i64.load + local.set $3 + local.get $4 + i64.load offset=8 + local.set $2 + local.get $4 + i64.load offset=16 + local.set $1 + local.get $6 + i64.const 0 + i64.ne + if + local.get $3 + local.get $6 + i64.shl + local.get $2 + i64.const 64 + local.get $6 + i64.sub + local.tee $7 + i64.shr_u + i64.or + local.set $3 + local.get $2 + local.get $6 + i64.shl + local.get $1 + local.get $7 + i64.shr_u + i64.or + local.set $2 + local.get $1 + local.get $6 + i64.shl + local.get $4 + i64.load offset=24 + local.get $7 + i64.shr_u + i64.or + local.set $1 + end + local.get $0 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + local.tee $6 + i64.const 4294967295 + i64.and + local.set $7 local.get $2 - f64.mul + i64.const 4294967295 + i64.and + local.tee $8 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $2 + i64.const 32 + i64.shr_u local.tee $2 - local.get $1 - f64.const 0.13339200271297674 - f64.mul - f64.const 0.3333313950307914 - f64.add - f64.mul - f64.add + local.get $7 + i64.mul + local.get $7 + local.get $8 + i64.mul + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.tee $8 + i64.const 4294967295 + i64.and + i64.add + local.set $10 local.get $2 - local.get $3 - f64.mul + local.get $9 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $10 + i64.const 32 + i64.shr_u + i64.add + global.set $~lib/math/res128_hi + local.get $9 local.get $1 - f64.const 0.024528318116654728 - f64.mul - f64.const 0.05338123784456704 - f64.add + i64.const 32 + i64.shr_u + i64.mul + local.tee $1 + local.get $7 + i64.const 4294967295 + i64.and + local.get $10 + i64.const 32 + i64.shl + i64.add + i64.add + local.tee $2 + local.get $1 + i64.lt_u + i64.extend_i32_u + global.get $~lib/math/res128_hi local.get $3 + local.get $6 + i64.mul + i64.add + i64.add + local.tee $3 + i64.const 2 + i64.shl + local.get $2 + i64.const 62 + i64.shr_u + i64.or + local.tee $6 + i64.const 63 + i64.shr_s + local.tee $7 + local.get $2 + i64.const 2 + i64.shl + i64.xor + local.set $2 + local.get $6 + local.get $7 + i64.const 1 + i64.shr_s + i64.xor + local.tee $1 + i64.clz + local.set $8 local.get $1 - f64.const 0.009465647849436732 + local.get $8 + i64.shl + local.get $2 + i64.const 64 + local.get $8 + i64.sub + i64.shr_u + i64.or + local.tee $9 + i64.const 4294967295 + i64.and + local.set $1 + local.get $9 + i64.const 32 + i64.shr_u + local.tee $10 + i64.const 560513588 + i64.mul + local.get $1 + i64.const 3373259426 + i64.mul + local.get $1 + i64.const 560513588 + i64.mul + local.tee $11 + i64.const 32 + i64.shr_u + i64.add + local.tee $12 + i64.const 4294967295 + i64.and + i64.add + local.set $1 + local.get $10 + i64.const 3373259426 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + i64.const 32 + i64.shr_u + i64.add + global.set $~lib/math/res128_hi + local.get $9 + f64.convert_i64_u + f64.const 3.753184150245214e-04 f64.mul - f64.const 0.002974357433599673 - f64.add + local.get $2 + local.get $8 + i64.shl + f64.convert_i64_u + f64.const 3.834951969714103e-04 f64.mul f64.add + i64.trunc_sat_f64_u + local.tee $2 + local.get $11 + i64.const 4294967295 + i64.and + local.get $1 + i64.const 32 + i64.shl + i64.add + local.tee $1 + i64.gt_u + i64.extend_i32_u + global.get $~lib/math/res128_hi + local.tee $9 + i64.const 11 + i64.shr_u + i64.add + f64.convert_i64_u + global.set $~lib/math/rempio2_y0 + local.get $9 + i64.const 53 + i64.shl + local.get $1 + i64.const 11 + i64.shr_u + i64.or + local.get $2 + i64.add + f64.convert_i64_u + f64.const 5.421010862427522e-20 f64.mul - f64.add - f64.div - f32.demote_f64 - ) - (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) - (local $4 i64) - (local $5 f64) + global.set $~lib/math/rempio2_y1 + global.get $~lib/math/rempio2_y0 + i64.const 4372995238176751616 + local.get $8 + i64.const 52 + i64.shl + i64.sub local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 + local.get $6 + i64.xor + i64.const -9223372036854775808 i64.and - local.tee $4 + i64.or f64.reinterpret_i64 - local.set $5 - local.get $4 - i64.const 32 - i64.shr_u + local.tee $5 + f64.mul + global.set $~lib/math/rempio2_y0 + global.get $~lib/math/rempio2_y1 + local.get $5 + f64.mul + global.set $~lib/math/rempio2_y1 + local.get $3 + i64.const 62 + i64.shr_s + local.get $7 + i64.sub i32.wrap_i64 - local.tee $3 - i32.const 1071748074 - i32.gt_u - if (result f64) - local.get $3 - i32.const 1077149696 - i32.gt_u - if (result f64) - f64.const 1 - f64.const 0 - local.get $5 - f64.div - f64.sub - else - f64.const 1 - f64.const 2 - local.get $5 - local.get $5 - f64.add - call $~lib/math/NativeMath.expm1 - f64.const 2 - f64.add - f64.div - f64.sub - end - else - local.get $3 - i32.const 1070618798 - i32.gt_u - if (result f64) - local.get $5 - local.get $5 - f64.add - call $~lib/math/NativeMath.expm1 - local.tee $5 - local.get $5 - f64.const 2 - f64.add - f64.div - else - local.get $3 - i32.const 1048576 - i32.ge_u - if (result f64) - local.get $5 - f64.const -2 - f64.mul - call $~lib/math/NativeMath.expm1 - local.tee $5 - f64.neg - local.get $5 - f64.const 2 - f64.add - f64.div - else - local.get $5 - end - end - end + ) + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + (local $1 i32) + (local $2 i64) + i64.const -7046029254386353131 local.get $0 - f64.copysign - local.get $1 + local.get $0 + i64.eqz + select + local.tee $0 + i64.const 33 + i64.shr_u + local.get $0 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/dom/Math.tanh - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end - ) - (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 i32) - (local $4 f32) - local.get $0 - i32.reinterpret_f32 - i32.const 2147483647 - i32.and - local.tee $3 - f32.reinterpret_i32 - local.set $4 - local.get $3 - i32.const 1057791828 - i32.gt_u - if (result f32) - local.get $3 - i32.const 1092616192 - i32.gt_u - if (result f32) - f32.const 0 - local.get $4 - f32.div - f32.const 1 - f32.add - else - f32.const 1 - f32.const 2 - local.get $4 - local.get $4 - f32.add - call $~lib/math/NativeMathf.expm1 - f32.const 2 - f32.add - f32.div - f32.sub - end - else - local.get $3 - i32.const 1048757624 - i32.gt_u - if (result f32) - local.get $4 - local.get $4 - f32.add - call $~lib/math/NativeMathf.expm1 - local.tee $4 - local.get $4 - f32.const 2 - f32.add - f32.div - else - local.get $3 - i32.const 8388608 - i32.ge_u - if (result f32) - local.get $4 - f32.const -2 - f32.mul - call $~lib/math/NativeMathf.expm1 - local.tee $4 - f32.neg - local.get $4 - f32.const 2 - f32.add - f32.div - else - local.get $4 - end - end - end + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $2 + i64.const 33 + i64.shr_u + local.get $2 + i64.xor + global.set $~lib/math/random_state1_64 local.get $0 - f32.copysign + i32.wrap_i64 + i32.const 1831565813 + i32.add + local.tee $1 + i32.const 1 + i32.or local.get $1 - local.get $2 - call $std/math/check + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.mul + local.tee $1 + i32.const 61 + i32.or + local.get $1 + local.get $1 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + local.get $1 + i32.add + local.get $1 + i32.xor + local.tee $1 + i32.const 14 + i32.shr_u + local.get $1 + i32.xor + global.set $~lib/math/random_state0_32 + global.get $~lib/math/random_state0_32 + i32.const 1831565813 + i32.add + local.tee $1 + i32.const 1 + i32.or + local.get $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + i32.mul + local.tee $1 + i32.const 61 + i32.or + local.get $1 + local.get $1 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + local.get $1 + i32.add + local.get $1 + i32.xor + local.tee $1 + i32.const 14 + i32.shr_u + local.get $1 + i32.xor + global.set $~lib/math/random_state1_32 + i32.const 1 + global.set $~lib/math/random_seeded ) - (func $~lib/math/NativeMath.sincos (param $0 f64) - (local $1 f64) - (local $2 f64) + (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 f64) + (local $6 f64) (local $7 f64) - (local $8 f64) - (local $9 f64) - (local $10 f64) local.get $0 i64.reinterpret_f64 - local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 local.tee $3 - i32.const 31 - i32.shr_u - local.set $6 - local.get $3 i32.const 2147483647 i32.and - local.tee $3 - i32.const 1072243195 - i32.le_u + i32.const 1072010280 + i32.ge_u + local.tee $4 if + f64.const 0.7853981633974483 local.get $3 - i32.const 1044816030 - i32.lt_u - if + i32.const 0 + i32.lt_s + if (result f64) + local.get $1 + f64.neg + local.set $1 + local.get $0 + f64.neg + else local.get $0 - global.set $~lib/math/NativeMath.sincos_sin - f64.const 1 - global.set $~lib/math/NativeMath.sincos_cos - return end - local.get $0 - local.get $0 - local.get $0 - f64.mul - local.tee $1 - local.get $0 - f64.mul - local.get $1 - local.get $1 - local.get $1 - f64.const 2.7557313707070068e-06 - f64.mul - f64.const -1.984126982985795e-04 - f64.add - f64.mul - f64.const 0.00833333333332249 - f64.add - local.get $1 - local.get $1 - local.get $1 - f64.mul - local.tee $2 - f64.mul - local.get $1 - f64.const 1.58969099521155e-10 - f64.mul - f64.const -2.5050760253406863e-08 - f64.add - f64.mul - f64.add - f64.mul - f64.const -0.16666666666666632 - f64.add - f64.mul - f64.add - global.set $~lib/math/NativeMath.sincos_sin - f64.const 1 - local.get $1 - f64.const 0.5 - f64.mul - local.tee $7 - f64.sub - local.tee $8 - f64.const 1 - local.get $8 - f64.sub - local.get $7 f64.sub + f64.const 3.061616997868383e-17 local.get $1 - local.get $1 - local.get $1 - local.get $1 - f64.const 2.480158728947673e-05 - f64.mul - f64.const -0.001388888888887411 - f64.add - f64.mul - f64.const 0.0416666666666666 - f64.add - f64.mul - local.get $2 - local.get $2 - f64.mul - local.get $1 - local.get $1 - f64.const -1.1359647557788195e-11 - f64.mul - f64.const 2.087572321298175e-09 - f64.add - f64.mul - f64.const -2.7557314351390663e-07 - f64.add - f64.mul - f64.add - f64.mul - local.get $0 - f64.const 0 - f64.mul f64.sub f64.add - f64.add - global.set $~lib/math/NativeMath.sincos_cos - return - end - local.get $3 - i32.const 2139095040 - i32.ge_u - if - local.get $0 - local.get $0 - f64.sub - local.tee $0 - global.set $~lib/math/NativeMath.sincos_sin - local.get $0 - global.set $~lib/math/NativeMath.sincos_cos - return - end - block $~lib/math/rempio2|inlined.3 (result i32) - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $4 - i32.const 1073928572 - i32.lt_u - if - i32.const 1 - local.set $3 - local.get $6 - if (result f64) - local.get $0 - f64.const 1.5707963267341256 - f64.add - local.set $0 - i32.const -1 - local.set $3 - local.get $4 - i32.const 1073291771 - i32.ne - if (result f64) - local.get $0 - local.get $0 - f64.const 6.077100506506192e-11 - f64.add - local.tee $0 - f64.sub - f64.const 6.077100506506192e-11 - f64.add - else - local.get $0 - f64.const 6.077100506303966e-11 - f64.add - local.tee $1 - f64.const 2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const 2.0222662487959506e-21 - f64.add - end - else - local.get $0 - f64.const -1.5707963267341256 - f64.add - local.set $0 - local.get $4 - i32.const 1073291771 - i32.ne - if (result f64) - local.get $0 - local.get $0 - f64.const -6.077100506506192e-11 - f64.add - local.tee $0 - f64.sub - f64.const -6.077100506506192e-11 - f64.add - else - local.get $0 - f64.const -6.077100506303966e-11 - f64.add - local.tee $1 - f64.const -2.0222662487959506e-21 - f64.add - local.set $0 - local.get $1 - local.get $0 - f64.sub - f64.const -2.0222662487959506e-21 - f64.add - end - end - local.get $0 - global.set $~lib/math/rempio2_y0 - global.set $~lib/math/rempio2_y1 - local.get $3 - br $~lib/math/rempio2|inlined.3 - end - local.get $4 - i32.const 1094263291 - i32.lt_u - if - local.get $4 - i32.const 20 - i32.shr_u - local.tee $3 - local.get $0 - local.get $0 - f64.const 0.6366197723675814 - f64.mul - f64.nearest - local.tee $7 - f64.const 1.5707963267341256 - f64.mul - f64.sub - local.tee $0 - local.get $7 - f64.const 6.077100506506192e-11 - f64.mul - local.tee $1 - f64.sub - local.tee $2 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 16 - i32.gt_u - if - local.get $7 - f64.const 2.0222662487959506e-21 - f64.mul - local.get $0 - local.get $0 - local.get $7 - f64.const 6.077100506303966e-11 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $1 - local.get $3 - local.get $0 - local.get $1 - f64.sub - local.tee $2 - i64.reinterpret_f64 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 20 - i32.shr_u - i32.const 2047 - i32.and - i32.sub - i32.const 49 - i32.gt_u - if - local.get $7 - f64.const 8.4784276603689e-32 - f64.mul - local.get $0 - local.get $0 - local.get $7 - f64.const 2.0222662487111665e-21 - f64.mul - local.tee $1 - f64.sub - local.tee $0 - f64.sub - local.get $1 - f64.sub - f64.sub - local.set $1 - local.get $0 - local.get $1 - f64.sub - local.set $2 - end - end - local.get $2 - global.set $~lib/math/rempio2_y0 - local.get $0 - local.get $2 - f64.sub - local.get $1 - f64.sub - global.set $~lib/math/rempio2_y1 - local.get $7 - i32.trunc_sat_f64_s - br $~lib/math/rempio2|inlined.3 - end - i32.const 0 - local.get $5 - call $~lib/math/pio2_large_quot - local.tee $3 - i32.sub - local.get $3 - local.get $6 - select + local.set $0 + f64.const 0 + local.set $1 end - local.set $3 - global.get $~lib/math/rempio2_y0 - local.tee $7 - local.get $7 - f64.mul - local.tee $8 - local.tee $0 - local.get $7 - f64.mul - local.set $1 - local.get $7 - local.get $0 - global.get $~lib/math/rempio2_y1 - local.tee $9 - f64.const 0.5 - f64.mul - local.get $1 local.get $0 local.get $0 - f64.const 2.7557313707070068e-06 f64.mul - f64.const -1.984126982985795e-04 - f64.add + local.tee $5 + local.get $5 f64.mul - f64.const 0.00833333333332249 - f64.add - local.get $0 + local.set $6 local.get $0 + local.get $1 + local.get $5 + local.get $5 local.get $0 f64.mul + local.tee $7 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + f64.const -1.8558637485527546e-05 f64.mul - local.get $0 - f64.const 1.58969099521155e-10 - f64.mul - f64.const -2.5050760253406863e-08 + f64.const 7.817944429395571e-05 f64.add f64.mul + f64.const 5.880412408202641e-04 f64.add f64.mul - f64.sub - f64.mul - local.get $9 - f64.sub - local.get $1 - f64.const -0.16666666666666632 - f64.mul - f64.sub - f64.sub - local.tee $2 - local.set $0 - f64.const 1 - local.get $8 - f64.const 0.5 + f64.const 3.5920791075913124e-03 + f64.add f64.mul - local.tee $1 - f64.sub - local.tee $10 - f64.const 1 - local.get $10 - f64.sub - local.get $1 - f64.sub - local.get $8 - local.get $8 - local.get $8 - local.get $8 - f64.const 2.480158728947673e-05 + f64.const 0.021869488294859542 + f64.add f64.mul - f64.const -0.001388888888887411 + f64.const 0.13333333333320124 f64.add + local.get $5 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + f64.const 2.590730518636337e-05 f64.mul - f64.const 0.0416666666666666 + f64.const 7.140724913826082e-05 f64.add f64.mul - local.get $8 - local.get $8 + f64.const 2.464631348184699e-04 + f64.add f64.mul - local.tee $1 - local.get $1 + f64.const 1.4562094543252903e-03 + f64.add f64.mul - local.get $8 - local.get $8 - f64.const -1.1359647557788195e-11 + f64.const 0.0088632398235993 + f64.add f64.mul - f64.const 2.087572321298175e-09 + f64.const 0.05396825397622605 f64.add f64.mul - f64.const -2.7557314351390663e-07 f64.add f64.mul + local.get $1 f64.add f64.mul + f64.add local.get $7 - local.get $9 + f64.const 0.3333333333333341 f64.mul - f64.sub f64.add + local.tee $1 f64.add - local.set $1 - local.get $3 - i32.const 1 - i32.and + local.set $5 + local.get $4 if - local.get $1 - local.set $0 + f64.const 1 + local.get $3 + i32.const 30 + i32.shr_s + i32.const 2 + i32.and + f64.convert_i32_s + f64.sub local.get $2 - f64.neg - local.set $1 - end - local.get $3 - i32.const 2 - i32.and - if (result f64) - local.get $1 - f64.neg - local.set $1 - local.get $0 - f64.neg - else + f64.convert_i32_s + local.tee $6 local.get $0 + local.get $5 + local.get $5 + f64.mul + local.get $5 + local.get $6 + f64.add + f64.div + local.get $1 + f64.sub + f64.sub + f64.const 2 + f64.mul + f64.sub + f64.mul + return end - global.set $~lib/math/NativeMath.sincos_sin - local.get $1 - global.set $~lib/math/NativeMath.sincos_cos - ) - (func $std/math/test_sincos (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (local $5 f64) - local.get $0 - f64.reinterpret_i64 - call $~lib/math/NativeMath.sincos - global.get $~lib/math/NativeMath.sincos_sin - local.get $1 - f64.reinterpret_i64 local.get $2 - f64.reinterpret_i64 - call $std/math/check - if - global.get $~lib/math/NativeMath.sincos_cos - local.get $3 - f64.reinterpret_i64 - local.get $4 - f64.reinterpret_i64 - call $std/math/check - drop - end - ) - (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) - (local $2 i32) - (local $3 i64) - (local $4 f64) - (local $5 i64) - local.get $0 - local.get $1 - f64.add - local.tee $4 - local.get $4 - f64.sub - f64.const 0 - f64.ne + i32.const 1 + i32.eq if - f64.const 0 + local.get $5 return end - local.get $0 + f64.const -1 + local.get $5 + f64.div + local.tee $6 i64.reinterpret_f64 - local.tee $3 - i64.const 52 - i64.shr_u - i64.const 2047 + i64.const -4294967296 i64.and - local.tee $5 - i64.const 1053 - i64.le_u - if (result i32) - local.get $0 - i32.trunc_sat_f64_s - else - local.get $5 - i64.const 1106 - i64.le_u - if (result i32) - i32.const 0 - local.get $3 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.get $5 - i64.const 1043 - i64.sub - i64.shl - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.sub - local.get $2 - local.get $3 - i64.const 0 - i64.lt_s - select - else - i32.const 0 - end - end - local.get $1 + f64.reinterpret_i64 + local.tee $7 + local.get $6 + local.get $7 + local.get $5 i64.reinterpret_f64 - local.tee $3 - i64.const 52 - i64.shr_u - i64.const 2047 + i64.const -4294967296 i64.and + f64.reinterpret_i64 local.tee $5 - i64.const 1053 - i64.le_u - if (result i32) - local.get $1 - i32.trunc_sat_f64_s - else - local.get $5 - i64.const 1106 - i64.le_u - if (result i32) - i32.const 0 - local.get $3 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - local.get $5 - i64.const 1043 - i64.sub - i64.shl - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $2 - i32.sub - local.get $2 - local.get $3 - i64.const 0 - i64.lt_s - select - else - i32.const 0 - end - end - i32.mul - f64.convert_i32_s - ) - (func $~lib/math/ipow64 (param $0 i64) (param $1 i64) (result i64) - (local $2 i64) - i64.const 1 - local.set $2 - local.get $0 - i64.const 2 - i64.eq - if - i64.const 1 - local.get $1 - i64.shl - i64.const 0 - local.get $1 - i64.const 64 - i64.lt_u - select - return - end + f64.mul + f64.const 1 + f64.add + local.get $7 local.get $1 - i64.const 0 - i64.le_s - if - local.get $0 - i64.const -1 - i64.eq - if - i64.const -1 - i64.const 1 - local.get $1 - i64.const 1 - i64.and - i32.wrap_i64 - select - return - end - local.get $1 - i64.eqz - i64.extend_i32_u - local.get $0 - i64.const 1 - i64.eq - i64.extend_i32_u - i64.or - return - else - local.get $1 - i64.const 1 - i64.eq - if - local.get $0 - return - else - local.get $1 - i64.const 2 - i64.eq - if - local.get $0 - local.get $0 - i64.mul - return - else - local.get $1 - i64.const 64 - i64.lt_s - if - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - i32.const 63 - local.get $1 - i64.clz - i32.wrap_i64 - i32.sub - br_table $case5|0 $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i64.const 1 - local.get $1 - i64.const 1 - i64.and - i32.wrap_i64 - select - local.set $2 - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $0 - local.get $2 - i64.mul - local.get $2 - local.get $1 - i64.const 1 - i64.and - i32.wrap_i64 - select - local.set $2 - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $0 - local.get $2 - i64.mul - local.get $2 - local.get $1 - i64.const 1 - i64.and - i32.wrap_i64 - select - local.set $2 - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $0 - local.get $2 - i64.mul - local.get $2 - local.get $1 - i64.const 1 - i64.and - i32.wrap_i64 - select - local.set $2 - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $0 - local.get $2 - i64.mul - local.get $2 - local.get $1 - i64.const 1 - i64.and - i32.wrap_i64 - select - local.set $2 - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - local.get $0 - local.get $2 - i64.mul - local.get $2 - local.get $1 - i64.const 1 - i64.and - i32.wrap_i64 - select - local.set $2 - end - local.get $2 - return - end - end - end - end - loop $while-continue|1 - local.get $1 - i64.const 0 - i64.ne - if - local.get $0 - local.get $2 - i64.mul - local.get $2 - local.get $1 - i64.const 1 - i64.and - i32.wrap_i64 - select - local.set $2 - local.get $1 - i64.const 1 - i64.shr_u - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - br $while-continue|1 - end - end - local.get $2 + local.get $5 + local.get $0 + f64.sub + f64.sub + f64.mul + f64.add + f64.mul + f64.add + ) + (func $~start + call $start:std/math ) (func $start:std/math (local $0 f64) @@ -49889,7 +49634,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -49933,7 +49678,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -49955,7 +49700,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50021,7 +49766,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50087,7 +49832,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50153,7 +49898,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50241,7 +49986,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50351,7 +50096,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -50505,7 +50250,7 @@ call $~lib/builtins/abort unreachable end - f64.const -nan:0x8000000000000 + f64.const nan:0x8000000000000 f64.const nan:0x8000000000000 f64.const 0 call $std/math/check @@ -51737,7 +51482,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51763,7 +51508,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51776,7 +51521,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51815,7 +51560,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51854,7 +51599,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51893,7 +51638,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -51945,7 +51690,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -52010,7 +51755,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -52036,7 +51781,7 @@ call $~lib/builtins/abort unreachable end - f32.const -nan:0x400000 + f32.const nan:0x400000 f32.const nan:0x400000 f32.const 0 call $std/math/check @@ -55559,66 +55304,26 @@ call $~lib/builtins/abort unreachable end - i64.const -4602641186874283791 - i64.const -4616392916911125550 - i64.const -4628956453976145920 - i64.const -4626592471448962314 - i64.const -4630808324688838656 - call $std/math/test_sincos - i64.const 4616578323568966759 - i64.const -4616789907589610460 - i64.const -4632356642145435648 - i64.const -4623234040091605244 - i64.const -4630954342839484416 - call $std/math/test_sincos - i64.const -4602464091242371353 - i64.const -4617413764247143988 - i64.const -4630245256623816704 - i64.const -4620663195860462557 - i64.const -4641537901929168896 - call $std/math/test_sincos - i64.const -4604332007749985084 - i64.const -4625343132137557201 - i64.const -4629629133364658176 - i64.const 4606905765568473756 - i64.const -4621075345754292224 - call $std/math/test_sincos - i64.const 4621406507342668262 - i64.const 4594826987695694788 - i64.const -4639197561901547520 - i64.const -4616301417154991689 - i64.const 4602463851227643904 - call $std/math/test_sincos - i64.const 4604137858433287319 - i64.const 4603711805189578650 - i64.const -4631518618864058368 - i64.const 4605279855905985745 - i64.const 4593746800099196928 - call $std/math/test_sincos - i64.const -4622375691843501615 - i64.const -4622575858842575876 - i64.const -4623091339515396096 - i64.const 4606448054996611351 - i64.const -4624994927539912704 - call $std/math/test_sincos - i64.const 4603235101512779211 - i64.const 4602973141375866126 - i64.const -4623304571219869696 - i64.const 4605798183832360369 - i64.const -4624249509122146304 - call $std/math/test_sincos - i64.const 4605148163534189634 - i64.const 4604472244479532466 - i64.const -4621996155604041728 - i64.const 4604615492473651755 - i64.const -4632555521679818752 - call $std/math/test_sincos - i64.const -4619083057392940530 - i64.const -4619541816298850243 - i64.const -4622804297187328000 - i64.const 4605185968576882368 - i64.const 4599236402884902912 - call $std/math/test_sincos + f64.const -8.06684839057968 + call $~lib/math/NativeMath.sincos + f64.const 4.345239849338305 + call $~lib/math/NativeMath.sincos + f64.const -8.38143342755525 + call $~lib/math/NativeMath.sincos + f64.const -6.531673581913484 + call $~lib/math/NativeMath.sincos + f64.const 9.267056966972586 + call $~lib/math/NativeMath.sincos + f64.const 0.6619858980995045 + call $~lib/math/NativeMath.sincos + f64.const -0.4066039223853553 + call $~lib/math/NativeMath.sincos + f64.const 0.5617597462207241 + call $~lib/math/NativeMath.sincos + f64.const 0.7741522965913037 + call $~lib/math/NativeMath.sincos + f64.const -0.6787637026394024 + call $~lib/math/NativeMath.sincos f64.const 2 f64.const 4 call $~lib/math/NativeMath.imul @@ -56192,7 +55897,4 @@ unreachable end ) - (func $~start - call $start:std/math - ) ) diff --git a/tests/compiler/std/mod.release.wat b/tests/compiler/std/mod.release.wat index 1fbd3592bf..568ccb771c 100644 --- a/tests/compiler/std/mod.release.wat +++ b/tests/compiler/std/mod.release.wat @@ -1,11 +1,11 @@ (module (type $0 (func)) - (type $1 (func (param f64 f64) (result f64))) + (type $1 (func (param i32 i32 i32 i32))) (type $2 (func (param f64 f64 f64) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) - (type $4 (func (param f32 f32 f32) (result i32))) - (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) + (type $3 (func (param f32 f32 f32) (result i32))) + (type $4 (func (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (memory $0 1) (data $0 (i32.const 1036) ",") (data $0.1 (i32.const 1048) "\02\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") @@ -507,6 +507,9 @@ f32.eq end ) + (func $~start + call $start:std/mod + ) (func $start:std/mod f64.const 3 f64.const 2 @@ -2264,7 +2267,4 @@ unreachable end ) - (func $~start - call $start:std/mod - ) ) diff --git a/tests/compiler/std/new.release.wat b/tests/compiler/std/new.release.wat index 012ec7a6db..98131dbec6 100644 --- a/tests/compiler/std/new.release.wat +++ b/tests/compiler/std/new.release.wat @@ -4,8 +4,8 @@ (type $2 (func (param i32 i32))) (type $3 (func (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (param i32) (result i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -33,57 +33,6 @@ (data $8 (i32.const 1440) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $std/new/aClass - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -628,6 +577,171 @@ i32.or i32.store offset=4 ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/new/AClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34240 + i32.const 0 + i32.store + i32.const 35808 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34240 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34240 + i32.const 35812 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34240 + global.set $~lib/rt/tlsf/ROOT + ) (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local $4 i32) @@ -742,85 +856,152 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize + (func $~lib/rt/itcms/visitRoots (local $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + global.get $std/new/aClass + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 34240 - i32.const 0 - i32.store - i32.const 35808 - i32.const 0 - i32.store - loop $for-loop|0 + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.ne if local.get $0 - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 34240 - i32.const 35812 + ) + (func $~start + (local $0 i32) memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34240 - global.set $~lib/rt/tlsf/ROOT + i32.const 16 + i32.shl + i32.const 34232 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1464 + i32.lt_s + if + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 2 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std/new/aClass ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1082,63 +1263,6 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) (local $1 i32) @@ -1195,12 +1319,11 @@ local.tee $0 i32.eqz if - memory.size - local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $0 + memory.size + local.tee $0 i32.const 16 i32.shl i32.const 4 @@ -1213,7 +1336,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.set $2 + local.get $0 + local.get $2 local.get $0 local.get $2 i32.gt_s @@ -1367,128 +1492,4 @@ i64.store align=1 local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $std/new/AClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 34232 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1464 - i32.lt_s - if - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 2 - f32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.add - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 3 - f32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $std/new/aClass - ) ) diff --git a/tests/compiler/std/operator-overloading.release.wat b/tests/compiler/std/operator-overloading.release.wat index 1efa8f2c5c..d352f0f211 100644 --- a/tests/compiler/std/operator-overloading.release.wat +++ b/tests/compiler/std/operator-overloading.release.wat @@ -5,9 +5,9 @@ (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i64))) + (type $8 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -107,48 +107,6 @@ (data $11 (i32.const 1584) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - call $~lib/rt/__visit_globals - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -301,330 +259,517 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/operator-overloading/TesterElementAccess#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=8 - local.set $5 + i32.store local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 + call $~lib/string/String.__eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 end - local.get $1 - local.get $0 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 i32.load - local.tee $3 - i32.const 1 + i32.const -4 i32.and - i32.eqz + i32.const 28 + i32.lt_u if i32.const 0 i32.const 1392 - i32.const 203 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.const 4 - i32.add + call $~lib/rt/tlsf/removeBlock local.get $1 i32.load + local.tee $3 i32.const -4 i32.and - i32.add + i32.const 28 + i32.sub local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + i32.const 16 + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 + i32.const 2 i32.and - i32.add - local.tee $3 + i32.const 28 + i32.or i32.store local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 32 i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 + local.tee $3 + local.get $4 i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else local.get $1 - call $~lib/rt/tlsf/removeBlock + local.get $3 + i32.const -2 + i32.and + i32.store local.get $1 - local.get $6 i32.const 4 i32.add - local.get $3 + local.get $1 + i32.load i32.const -4 i32.and i32.add - local.tee $3 + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and i32.store end - local.get $4 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 8 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 local.get $2 - i32.const 2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 i32.const 4 i32.add - local.get $2 i32.add - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub + global.set $~lib/rt/itcms/total local.get $1 - i32.store - local.get $2 + i32.const 20 + i32.add + local.tee $0 + i64.const 0 + i64.store align=1 + local.get $0 + ) + (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/operator-overloading/TesterElementAccess#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 256 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 4 i32.shr_u else i32.const 31 i32.const 1073741820 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 1073741820 i32.ge_u select - local.tee $2 + local.tee $3 i32.clz i32.sub - local.tee $3 + local.tee $4 i32.const 7 i32.sub - local.set $5 - local.get $2 + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -632,1867 +777,1723 @@ if i32.const 0 i32.const 1392 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 382 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.load + local.tee $3 + i32.const 1 i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 local.get $3 i32.const 4 i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 + i32.load + i32.const -4 + i32.and i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if local.get $1 - i32.gt_u + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end + local.get $4 local.get $2 - i32.wrap_i64 - i32.const -16 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 + local.tee $2 + i32.const 12 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 i32.const 4 i32.add - local.get $3 + local.get $2 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort unreachable end - i32.const 34400 - i32.const 0 - i32.store - i32.const 35968 - i32.const 0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34400 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34400 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/operator-overloading/TesterElementAccess + block $std/operator-overloading/TesterInlineInstance + block $std/operator-overloading/TesterInlineStatic + block $std/operator-overloading/Tester + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return end + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + return end + return end - i32.const 34400 - i32.const 35972 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34400 - global.set $~lib/rt/tlsf/ROOT + unreachable ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) + (func $~lib/string/String.__eq (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + if + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.const 1536 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.store + local.get $2 + i32.const 1532 + i32.load + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1536 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 1536 + i32.store offset=4 + i32.const 1 + local.get $0 + local.tee $1 + i32.const 7 + i32.and + local.get $2 + local.tee $0 + i32.const 4 + i32.lt_u + select + i32.eqz + if + loop $do-loop|0 + local.get $1 + i64.load + local.get $3 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 + end + block $__inlined_func$~lib/util/string/compareImpl$199 loop $while-continue|1 local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 if - local.get $0 - global.set $~lib/rt/itcms/iter local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and + i32.load16_u + local.tee $4 + local.get $3 + i32.load16_u + local.tee $5 + i32.sub + local.set $2 + local.get $4 + local.get $5 i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 + br_if $__inlined_func$~lib/util/string/compareImpl$199 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $3 + i32.const 2 + i32.add + local.set $3 br $while-continue|1 end end i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34388 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + local.set $2 end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne if i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 1392 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34388 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34388 - i32.ge_u + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34400 + i32.const 0 + i32.store + i32.const 35968 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34400 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34400 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.add + local.set $1 + br $for-loop|1 end end - i32.const 10 - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + i32.const 34400 + i32.const 35972 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34400 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $1 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 + i32.const 1120 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u + i32.const 1 + local.set $2 + local.get $0 + i32.const 2 + i32.eq if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $1 - loop $do-loop|0 + i32.const 1 + local.get $1 + i32.shl + i32.const 0 + local.get $1 + i32.const 32 + i32.lt_u + select + return + end + local.get $1 + i32.const 0 + i32.le_s + if + local.get $0 + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + return + end + local.get $1 + i32.eqz + local.get $0 + i32.const 1 + i32.eq + i32.or + return + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + return + else + local.get $1 + i32.const 2 + i32.eq + if + local.get $0 + local.get $0 + i32.mul + return + else local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz + i32.const 32 + i32.lt_s if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 31 + local.get $1 + i32.clz + i32.sub + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + end + local.get $2 + return end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 + loop $while-continue|1 local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + br $while-continue|1 end end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + local.get $2 + ) + (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 + i32.const 34416 + i32.const 34464 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.store local.get $1 i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or + i32.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 - i32.const -2 - i32.and i32.store local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.load offset=4 + i32.ne + else + i32.const 0 end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 8 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i64.const 0 - i64.store align=1 - local.get $0 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 1 - local.set $2 - local.get $0 - i32.const 2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s if + i32.const 34416 + i32.const 34464 i32.const 1 - local.get $1 - i32.shl - i32.const 0 - local.get $1 - i32.const 32 - i32.lt_u - select - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.le_s - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const -1 - i32.eq - if - i32.const -1 - i32.const 1 - local.get $1 - i32.const 1 - i32.and - select - return - end - local.get $1 - i32.eqz + i32.store local.get $0 - i32.const 1 - i32.eq - i32.or - return - else + i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 + i32.store + local.get $1 + i32.load offset=4 i32.eq - if - local.get $0 - return - else - local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - local.get $0 - i32.mul + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:std/operator-overloading + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount return - else - local.get $1 - i32.const 32 - i32.lt_s + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - i32.const 31 - local.get $1 - i32.clz - i32.sub - br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.const 1 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34388 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if local.get $0 local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 + i32.const -4 i32.and - select - local.set $2 local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 + i32.or + i32.store offset=4 local.get $0 - i32.mul - local.set $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 + i32.load offset=4 + i32.const -4 i32.and - select - local.set $2 + local.set $0 + br $while-continue|2 end - local.get $2 - return end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - end - loop $while-continue|1 - local.get $1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 + i32.load offset=4 + local.tee $1 + i32.const -4 i32.and - select - local.set $2 + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|1 - end - end - local.get $2 - ) - (func $~lib/rt/__visit_globals - (local $0 i32) - global.get $std/operator-overloading/a1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/a2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/a - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/s - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/m - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/d - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/f1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/f2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/f - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/p1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/p2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/p - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/n - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/o - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x2 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/x - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/operator-overloading/eq1 - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34388 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34388 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $std/operator-overloading/eq2 + i32.const 0 + ) + (func $~lib/rt/__visit_globals + (local $0 i32) + global.get $std/operator-overloading/a1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/eq3 + global.get $std/operator-overloading/a2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/eq4 + global.get $std/operator-overloading/a local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/gt1 + global.get $std/operator-overloading/s1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/gt2 + global.get $std/operator-overloading/s2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/gte1 + global.get $std/operator-overloading/s local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/gte2 + global.get $std/operator-overloading/m1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/le1 + global.get $std/operator-overloading/m2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/le2 + global.get $std/operator-overloading/m local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/leq1 + global.get $std/operator-overloading/d1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/leq2 + global.get $std/operator-overloading/d2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/shr + global.get $std/operator-overloading/d local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/sres + global.get $std/operator-overloading/f1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/shu + global.get $std/operator-overloading/f2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/ures + global.get $std/operator-overloading/f local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/shl + global.get $std/operator-overloading/p1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/pos + global.get $std/operator-overloading/p2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/pres + global.get $std/operator-overloading/p local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/neg + global.get $std/operator-overloading/n1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/nres + global.get $std/operator-overloading/n2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/not + global.get $std/operator-overloading/n local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/res + global.get $std/operator-overloading/o1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/excl + global.get $std/operator-overloading/o2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/o local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/tmp + global.get $std/operator-overloading/x1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/ais1 + global.get $std/operator-overloading/x2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/ais2 + global.get $std/operator-overloading/x local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/ais + global.get $std/operator-overloading/eq1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/aii1 + global.get $std/operator-overloading/eq2 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/aii2 + global.get $std/operator-overloading/eq3 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/aii + global.get $std/operator-overloading/eq4 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit end - global.get $std/operator-overloading/tea + global.get $std/operator-overloading/gt1 local.tee $0 if local.get $0 call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $std/operator-overloading/TesterElementAccess - block $std/operator-overloading/TesterInlineInstance - block $std/operator-overloading/TesterInlineStatic - block $std/operator-overloading/Tester - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $std/operator-overloading/TesterElementAccess $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:std/operator-overloading - ) - (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + end + global.get $std/operator-overloading/gt2 + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gte1 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte2 + local.tee $0 + if local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.eq - else - i32.const 0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/le1 + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - i32.ne - if (result i32) - global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/le2 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq1 + local.tee $0 + if local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - i32.ne - else - i32.const 0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/leq2 + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/shr + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/string/String.__eq (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/sres + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.const 1536 - i32.eq + global.get $std/operator-overloading/shu + local.tee $0 if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ures + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shl + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pos + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - block $folding-inner0 + global.get $std/operator-overloading/pres + local.tee $0 + if local.get $0 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/neg + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/nres + local.tee $0 + if local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.store - local.get $2 - i32.const 1532 - i32.load - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/not + local.tee $0 + if local.get $0 - i32.store - i32.const 1536 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 1536 - i32.store offset=4 - i32.const 1 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/res + local.tee $0 + if local.get $0 - local.tee $1 - i32.const 7 - i32.and - local.get $2 - local.tee $0 - i32.const 4 - i32.lt_u - select - i32.eqz - if - loop $do-loop|0 - local.get $1 - i64.load - local.get $3 - i64.load - i64.eq - if - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$199 - loop $while-continue|1 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $1 - i32.load16_u - local.tee $4 - local.get $3 - i32.load16_u - local.tee $5 - i32.sub - local.set $2 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$199 - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|1 - end - end - i32.const 0 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.eqz - return + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $std/operator-overloading/TesterElementAccess#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/excl + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/string/String.__eq + global.get $std/operator-overloading/incdec + local.tee $0 if - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tmp + local.tee $0 + if local.get $0 - local.get $2 - i32.store - else - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais1 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais2 + local.tee $0 + if local.get $0 - local.get $2 - i32.store offset=4 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/operator-overloading/TesterElementAccess#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s + global.get $std/operator-overloading/ais + local.tee $0 if - i32.const 34416 - i32.const 34464 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/string/String.__eq - if (result i32) - global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii1 + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii2 + local.tee $0 + if local.get $0 - i32.load - else - global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii + local.tee $0 + if local.get $0 - i32.store + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tea + local.tee $0 + if local.get $0 - i32.load offset=4 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit ) (func $start:std/operator-overloading (local $0 i32) diff --git a/tests/compiler/std/pointer.release.wat b/tests/compiler/std/pointer.release.wat index d014421032..59ac04a1e5 100644 --- a/tests/compiler/std/pointer.release.wat +++ b/tests/compiler/std/pointer.release.wat @@ -12,6 +12,9 @@ (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") (export "memory" (memory $0)) (start $~start) + (func $~start + call $start:std/pointer + ) (func $start:std/pointer (local $0 i32) (local $1 i32) @@ -366,7 +369,4 @@ unreachable end ) - (func $~start - call $start:std/pointer - ) ) diff --git a/tests/compiler/std/set.release.wat b/tests/compiler/std/set.release.wat index 22fd0d652b..e48a3d3f19 100644 --- a/tests/compiler/std/set.release.wat +++ b/tests/compiler/std/set.release.wat @@ -3,24 +3,24 @@ (type $1 (func (param i32 i32) (result i32))) (type $2 (func)) (type $3 (func (result i32))) - (type $4 (func (param i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32 i32) (result i32))) - (type $7 (func (param i32 i64))) + (type $4 (func (param i32) (result i32))) + (type $5 (func (param i32))) + (type $6 (func (param i32 i64))) + (type $7 (func (param i32 i32 i32) (result i32))) (type $8 (func (param i32 i32 i32))) (type $9 (func (param i32 i32 i32 i32))) - (type $10 (func (param i32 i32 i64))) - (type $11 (func (param i32 i64 i32) (result i32))) - (type $12 (func (param i32 i64) (result i32))) - (type $13 (func (param i32 i32) (result i64))) - (type $14 (func (param i32 f32))) - (type $15 (func (param i32 f64))) - (type $16 (func (param i32 f32 i32) (result i32))) + (type $10 (func (param i32 i64) (result i32))) + (type $11 (func (param i32 f64))) + (type $12 (func (param i32 f32))) + (type $13 (func (param i32 i64 i32) (result i32))) + (type $14 (func (param i32 i32 i64))) + (type $15 (func (param i32 i32) (result i64))) + (type $16 (func (param i32 f64) (result i32))) (type $17 (func (param i32 f32) (result i32))) - (type $18 (func (param i32 i32) (result f32))) - (type $19 (func (param i32 f64 i32) (result i32))) - (type $20 (func (param i32 f64) (result i32))) - (type $21 (func (param i32 i32) (result f64))) + (type $18 (func (param i32 f64 i32) (result i32))) + (type $19 (func (param i32 f32 i32) (result i32))) + (type $20 (func (param i32 i32) (result f64))) + (type $21 (func (param i32 i32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -55,1719 +55,1547 @@ (data $12 (i32.const 1648) "\18\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00H\08\00\00B\08\00\00H\00\00\00B\00\00\00\88\08\00\00\82\08\00\00\88\00\00\00\82\00\00\00\08\t\00\00\02\t\00\00\08\01\00\00\02\01\00\00\08\n\00\00\02\n\00\00\08\02\00\00\02\02\00\00\08\19\00\00\02\19\00\00\08\1a\00\00\02\1a") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1456 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (func $~lib/set/Set#get:size (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$904 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34516 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$904 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.const 34544 + i32.const 34592 i32.const 1 - else - local.get $1 - i32.const 1648 - i32.load - i32.gt_u - if - i32.const 1248 - i32.const 1312 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1652 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 + i32.store local.get $0 - i32.store offset=8 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 i32.eqz if return end - global.get $~lib/rt/itcms/white local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and i32.eq if local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 270 - i32.const 14 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 1392 - i32.const 284 - i32.const 14 + i32.const 1456 + i32.const 1504 + i32.const 52 + i32.const 43 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 201 - i32.const 14 + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 i32.add - local.tee $4 - i32.load local.tee $2 - i32.const 1 - i32.and + i32.const 1073741820 + i32.gt_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.tee $4 - i32.load - local.set $2 + i32.const -16 + i32.and + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1392 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1392 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1392 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shr_u + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - i32.const 31 - i32.const 1073741820 local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub + i32.load + i32.const -4 + i32.and + i32.add local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.load + i32.const -3 + i32.and + i32.store end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 + local.get $3 i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl + i32.const 3 + i32.and i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 i32.and i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill local.get $1 + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - return + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 local.get $1 - i32.const 4 - i32.add - local.get $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 i32.add - local.tee $3 - i32.const 2 - i32.store + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 local.get $0 - local.get $3 - i32.store offset=1568 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 34528 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 36096 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34528 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 34528 - i32.const 36100 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34528 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34516 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34516 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34516 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.const 256 - i32.lt_u + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - i32.const 0 - i32.const 1392 - i32.const 334 - i32.const 14 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $2 - i32.const 2 - i32.shl + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u local.get $0 - i32.const 1073741804 - i32.ge_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - i32.const 1056 - i32.const 1120 - i32.const 261 - i32.const 31 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 local.get $0 i32.const 16 + i32.shr_u + i32.xor + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - i32.const 1056 - i32.const 1392 - i32.const 461 - i32.const 29 + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + local.get $2 + i32.shr_u + i32.gt_u if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 + local.get $1 + i32.const 1073741820 local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 i32.shr_u - local.tee $3 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select local.get $2 + i32.shl + local.set $1 local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s + i32.const 1073741820 + local.get $5 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $1 + end + block $__inlined_func$~lib/rt/itcms/__renew$893 + local.get $4 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u if - unreachable + local.get $3 + local.get $1 + i32.store offset=16 + local.get $4 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$893 end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $4 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $1 + local.get $3 + i32.lt_u + select + memory.copy end - local.get $4 local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz + i32.ne if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link end + local.get $0 + local.get $1 + i32.store offset=8 end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.const 15 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $6 - i32.const -4 - i32.and - local.get $5 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/rt/itcms/visitCount end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 + ) + (func $~lib/set/Set#clear (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.or i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 3 - i32.and - i32.or i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 local.get $1 - local.get $2 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - memory.fill - local.get $1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s if - return + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 i32.eq if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.load offset=20 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=8 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner2 + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 34516 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - global.set $~lib/rt/itcms/threshold + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1785,153 +1613,179 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $0 - local.get $1 i32.store local.get $0 local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 local.get $1 - i32.store offset=8 - local.get $0 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz if - i32.const 34544 - i32.const 34592 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $3 + local.get $1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1946,236 +1800,341 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 local.get $1 - i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761397 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 15 i32.shr_u + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 13 i32.shr_u + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $0 - local.get $0 + local.tee $2 i32.const 16 i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor + i32.xor local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - local.get $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load8_s - local.tee $8 - i32.store8 - local.get $2 - local.get $5 - local.get $1 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|0 + call $~lib/set/Set#rehash end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 + i32.store local.get $0 - i32.load offset=20 - i32.store offset=16 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) @@ -2236,7 +2195,7 @@ local.get $2 i32.xor local.tee $3 - call $~lib/set/Set#find + call $~lib/set/Set#find i32.eqz if global.get $~lib/memory/__stack_pointer @@ -2354,248 +2313,16 @@ i32.store end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $5 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - local.get $2 - i32.shl - local.set $1 - local.get $3 - if - i32.const 1073741820 - local.get $5 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.set $1 - end - block $__inlined_func$~lib/rt/itcms/__renew$893 - local.get $4 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - local.get $1 - i32.ge_u - if - local.get $3 - local.get $1 - i32.store offset=16 - local.get $4 - local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$893 - end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $4 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $1 - local.get $3 - i32.lt_u - select - memory.copy - end - local.get $2 - local.get $4 - i32.ne - if - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $1 - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2610,102 +2337,180 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/array/ensureCapacity + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz if - i32.const 34544 - i32.const 34592 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $3 + local.get $1 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2730,119 +2535,340 @@ local.get $0 local.get $1 local.get $1 - i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761394 + i32.const 374761397 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 i32.const 15 i32.shr_u - local.get $1 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 i32.const 13 i32.shr_u - local.get $1 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 i32.const 16 i32.shr_u - local.get $1 + local.get $2 i32.xor - call $~lib/set/Set#find - local.tee $1 + local.tee $3 + call $~lib/set/Set#find i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 + i32.const 8 i32.sub - i32.store offset=20 + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 local.get $1 - i32.const 1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 i32.add - i32.const 4 - local.get $0 - i32.load offset=20 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $2 + i32.const 15 + i32.shr_u local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load offset=20 + i32.load offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 local.get $1 - call $~lib/set/Set#rehash + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 f64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2864,657 +2890,616 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 local.get $1 - i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 8 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 + local.get $0 i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $for-loop|1 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - if + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - local.get $1 local.get $0 - call $~lib/set/Set#add + i32.load offset=4 + else global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.shl + i32.const 1 + i32.or end + call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=8 - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 4 + i32.shl + i32.add + local.tee $4 + local.get $1 + f64.store global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $6 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.store offset=4 - local.get $6 - i32.const 0 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $0 + i32.load + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 + local.get $0 + i32.store + local.get $4 + local.get $5 + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $4 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + call $~lib/set/Set#find + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=8 + local.get $0 + i32.store + local.get $0 + i32.load offset=16 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 1073741820 - i32.gt_u + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 + local.get $0 + i32.store + local.get $0 + i32.load offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 + local.get $0 i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 + local.get $0 i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $3 + local.get $1 + f32.store global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 local.get $0 - i32.store offset=8 + i32.store global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load8_s - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $0 i32.store - local.get $6 local.get $0 - call $~lib/array/Array#set:length + i32.load + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + local.get $3 + local.get $4 + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i32.load + i32.store offset=4 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - local.get $0 - i32.ne - if i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + global.set $~lib/rt/itcms/toSpace local.get $1 + global.set $~lib/rt/itcms/white local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace i32.ne if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 local.get $0 - i32.const 50 - i32.lt_s + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34516 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 i32.store offset=4 - local.get $1 local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total local.get $0 - call $~lib/set/Set#has + i32.const 4 + i32.add + local.tee $0 + i32.const 34516 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3529,78 +3514,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 i32.store local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 + i32.load global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $0 - local.get $1 - i32.store offset=8 + i32.store + local.get $2 local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3623,55 +3596,60 @@ local.get $0 i32.store local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 + i32.load + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 + i32.store + local.get $2 local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3686,177 +3664,142 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 - i32.load offset=8 - local.set $4 + i32.load global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $4 + i32.store + local.get $2 local.get $0 - i32.load offset=16 - i32.const 3 + i32.load offset=4 + i32.and + i32.const 2 i32.shl i32.add - local.set $7 - local.get $3 - local.set $2 + i32.load + local.set $0 loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne + local.get $0 if - local.get $4 + local.get $0 i32.load offset=4 + local.tee $2 i32.const 1 i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load8_u - local.tee $8 - i32.store8 - local.get $2 - local.get $5 + if (result i32) + i32.const 0 + else local.get $1 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $8 + local.get $0 i32.load - i32.store offset=4 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 8 + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $4 - i32.const 8 - i32.add - local.set $4 + local.get $2 + i32.const -2 + i32.and + local.set $0 br $while-continue|0 end end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.store local.get $0 - i32.store offset=8 + i32.load global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 - local.get $0 + i32.store + local.get $2 local.get $0 - i32.load offset=20 - i32.store offset=16 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3871,167 +3814,143 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - local.get $1 - local.get $1 - i32.const 255 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 + i32.const 2 + i32.shl i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load + local.set $0 + loop $while-continue|0 local.get $0 - i32.load offset=12 - i32.eq if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + i32.const 0 else - global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.store offset=4 + i64.load + i64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + return end - call $~lib/set/Set#rehash + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/set/Set#clear (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4053,35 +3972,61 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $2 local.get $0 i32.load offset=4 + i32.and + i32.const 2 + i32.shl i32.add - i32.load8_u + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4096,705 +4041,736 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + i32.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $2 local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 1 + i32.and + i32.const 2 + i32.shl i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load + local.set $0 + loop $while-continue|0 local.get $0 - local.get $1 - call $~lib/set/Set#rehash + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f64.load + f64.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if local.get $0 - i32.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else local.get $1 local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + f32.load + f32.eq end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + i32.const 4 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.tee $4 + i32.const 7 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 local.get $5 - i32.const 8 - i32.le_u - select - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + end + local.get $5 + if local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load8_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add + i32.load + i32.const -2 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 + i32.rotl + i32.and + i32.store end end - global.get $~lib/memory/__stack_pointer + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.store offset=4 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/set/Set#get:size - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + call $~lib/rt/tlsf/removeBlock local.get $1 - call $~lib/set/Set#get:size + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if local.get $0 - i32.ne + i32.load offset=8 + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 + i32.const 1120 + i32.const 148 + i32.const 30 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|3 + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$904 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if local.get $0 - i32.const 50 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34516 i32.lt_u + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$904 end - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne + i32.const 1648 + i32.load + i32.gt_u if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 2 + i32.shl + i32.const 1652 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1748 + i32.lt_s + br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -4806,11 +4782,9 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4825,154 +4799,25 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 i32.store local.get $0 local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4991,49 +4836,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.const 0 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5115,16 +4934,16 @@ if local.get $2 local.get $4 - i32.load16_s + i32.load8_u local.tee $8 - i32.store16 + i32.store8 local.get $2 local.get $5 local.get $1 local.get $8 i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -5195,216 +5014,37 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - end + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5419,61 +5059,131 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 - i32.load offset=12 - i32.ge_u + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - i32.const 1 - call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 i32.const 1 - i32.shl i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 local.get $2 - i32.store16 - global.get $~lib/memory/__stack_pointer i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5488,77 +5198,88 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.const 0 - call $~lib/array/ensureCapacity + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.store local.get $0 local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - i32.store local.get $1 + i32.store offset=8 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5576,713 +5297,1160 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $8 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $5 + local.get $1 + local.get $6 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=8 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $4 + i32.const 16 + i32.add + local.set $4 + br $while-continue|0 + end end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 + local.get $7 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - i32.const 4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/set/Set#rehash - end + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $6 + local.get $0 i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 + local.get $0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 536870910 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + end + if global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 i32.const 1 - i32.shl - local.tee $0 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $5 - i32.lt_s + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if + local.get $2 local.get $4 + i32.load + local.tee $8 + i32.store local.get $2 - i32.const 3 - i32.shl + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load16_s - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 local.get $2 - i32.const 1 + i32.store + local.get $2 + i32.const 8 i32.add local.set $2 - br $for-loop|00 end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/array/Array#set:length + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end + local.get $0 + i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 - call $~lib/set/Set#get:size - local.set $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.get $2 + local.get $4 + i32.load16_u + local.tee $8 + i32.store16 + local.get $2 + local.get $5 local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 i32.add - local.set $0 - br $for-loop|3 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl i32.add - local.set $0 - br $for-loop|4 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + local.get $1 + local.get $1 + i32.load offset=4 i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/set/Set#constructor (result i32) (local $0 i32) @@ -6354,89 +6522,27 @@ local.get $0 i32.store offset=4 local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 + i32.store offset=4 local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find i32.const 0 - i32.ne + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6518,16 +6624,16 @@ if local.get $2 local.get $4 - i32.load16_u + i32.load8_s local.tee $8 - i32.store16 + i32.store8 local.get $2 local.get $5 local.get $1 local.get $8 i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -6606,255 +6712,26 @@ call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.store offset=8 local.get $0 - i32.store - local.get $1 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=12 local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u + local.get $0 + i32.load offset=20 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -6880,11 +6757,10 @@ local.get $0 local.get $1 local.get $1 - i32.const 65535 - i32.and + i32.extend8_s i32.const -1028477379 i32.mul - i32.const 374761395 + i32.const 374761394 i32.add i32.const 17 i32.rotl @@ -6909,7 +6785,7 @@ i32.shr_u local.get $1 i32.xor - call $~lib/set/Set#find + call $~lib/set/Set#find local.tee $1 i32.eqz if @@ -6941,650 +6817,1330 @@ local.get $0 i32.store local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=8 - local.set $4 + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + else i32.const 0 - i32.store offset=8 + end + if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 536870910 - i32.gt_u + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $8 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable + local.get $4 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $4 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $5 + local.get $1 + local.get $6 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + i32.const 15 + i32.shr_u + local.get $9 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + i32.const 13 + i32.shr_u + local.get $9 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + i32.const 16 + i32.shr_u + local.get $9 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=8 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $4 + i32.const 16 + i32.add + local.set $4 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 i32.const 1 - i32.shl - local.tee $0 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $3 + local.get $3 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 + local.get $0 i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $5 - i32.lt_s + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if + local.get $2 local.get $4 + i32.load + local.tee $8 + i32.store local.get $2 - i32.const 3 + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 i32.shl i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load16_u - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 local.get $2 - i32.const 1 + i32.store + local.get $2 + i32.const 8 i32.add local.set $2 - br $for-loop|00 end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/array/Array#set:length + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 - call $~lib/set/Set#get:size - local.set $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 - end - end + end + if global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_u + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $4 + i32.load16_s + local.tee $8 + i32.store16 + local.get $2 + local.get $5 local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 i32.add - local.set $0 - br $for-loop|4 + local.set $2 end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 + i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 34544 - i32.const 34592 + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + local.get $2 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) + (func $~lib/set/Set#constructor (result i32) (local $0 i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -7610,7 +8166,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 - i32.const 12 + i32.const 8 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -7674,148 +8230,16 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f64) + (local $9 i64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 16 i32.sub @@ -7854,7 +8278,7 @@ i32.const 3 i32.div_s local.tee $6 - i32.const 3 + i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $3 @@ -7871,7 +8295,7 @@ local.get $4 local.get $0 i32.load offset=16 - i32.const 3 + i32.const 4 i32.shl i32.add local.set $7 @@ -7883,64 +8307,78 @@ i32.ne if local.get $4 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 local.get $4 - i32.load + f64.load local.tee $8 - i32.store + f64.store local.get $2 local.get $5 local.get $1 local.get $8 + i64.reinterpret_f64 + local.tee $9 + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761397 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $8 - local.get $8 + local.get $9 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $10 i32.const 15 i32.shr_u + local.get $10 i32.xor i32.const -2048144777 i32.mul - local.tee $8 - local.get $8 + local.tee $10 i32.const 13 i32.shr_u + local.get $10 i32.xor i32.const -1028477379 i32.mul - local.tee $8 - local.get $8 + local.tee $10 i32.const 16 i32.shr_u + local.get $10 i32.xor i32.and i32.const 2 i32.shl i32.add - local.tee $8 + local.tee $10 i32.load - i32.store offset=4 - local.get $8 + i32.store offset=8 + local.get $10 local.get $2 i32.store local.get $2 - i32.const 8 + i32.const 16 i32.add local.set $2 end local.get $4 - i32.const 8 + i32.const 16 i32.add local.set $4 br $while-continue|0 @@ -7997,8 +8435,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) + (local $2 i64) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer @@ -8025,229 +8463,135 @@ local.get $0 local.get $1 local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 i32.const -1028477379 i32.mul - i32.const 374761397 + i32.const 374761401 i32.add i32.const 17 i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 i32.const 15 i32.shr_u - local.get $2 + local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $3 i32.const 13 i32.shr_u - local.get $2 + local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $3 i32.const 16 i32.shr_u - local.get $2 + local.get $3 i32.xor + call $~lib/set/Set#find local.tee $3 - call $~lib/set/Set#find i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 8 i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store + global.set $~lib/memory/__stack_pointer + return end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.const 4 local.get $0 - i32.load offset=12 + i32.load offset=20 + local.tee $4 + local.get $4 + i32.const 4 + i32.lt_u + select i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $3 - i32.store offset=12 + call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8262,27 +8606,87 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 2 - i32.const 0 - call $~lib/array/ensureCapacity + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.store local.get $0 local.get $1 - i32.store offset=12 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8297,40 +8701,176 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $7 + i32.ne + if + local.get $4 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $4 + i32.load + local.set $8 + local.get $2 + local.get $4 + f32.load + f32.store + local.get $2 + local.get $5 + local.get $1 + local.get $8 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $8 + local.get $8 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $8 + local.get $8 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $8 + local.get $8 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $0 + local.get $5 i32.store + local.get $0 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=8 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $6 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8355,6 +8895,7 @@ local.get $0 local.get $1 local.get $1 + i32.reinterpret_f32 i32.const -1028477379 i32.mul i32.const 374761397 @@ -8363,27 +8904,27 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 i32.const 15 i32.shr_u - local.get $1 + local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 i32.const 13 i32.shr_u - local.get $1 + local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 i32.const 16 i32.shr_u - local.get $1 + local.get $2 i32.xor - call $~lib/set/Set#find - local.tee $1 + call $~lib/set/Set#find + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -8392,8 +8933,8 @@ global.set $~lib/memory/__stack_pointer return end - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 1 i32.or @@ -8417,18 +8958,18 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -8436,632 +8977,692 @@ if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.store + local.get $0 + i32.load offset=20 global.get $~lib/memory/__stack_pointer - i32.const 1748 + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + else + i32.const 0 + end + if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.shr_u + local.set $1 + else local.get $1 - i32.store + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end local.get $1 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 31 + local.get $1 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 268435455 - i32.gt_u - if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - local.get $7 - i32.load - call $~lib/array/Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 + i32.load offset=96 + else local.get $0 - call $~lib/array/Array#set:length - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.load + i32.const -1 + local.get $2 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - local.get $0 - i32.ne - if + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow i32.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34528 + i32.const 0 + i32.store + i32.const 36096 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34528 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - local.get $0 - call $~lib/set/Set#has + i32.const 16 + i32.lt_u if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34528 + i32.add i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|3 end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + end + i32.const 34528 + i32.const 36100 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34528 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne + i32.gt_u if i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 + i32.const 1392 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i32.const 50 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 - end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 end - global.get $~lib/memory/__stack_pointer + else + local.get $0 + i32.const 1572 + i32.add local.get $1 - i32.store offset=4 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 local.get $1 - call $~lib/set/Set#get:size - i32.const 50 i32.ne if - i32.const 0 - i32.const 1568 - i32.const 45 + local.get $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 + i32.and i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 34544 - i32.const 34592 - i32.const 1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9076,78 +9677,140 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=8 + i32.const 0 + i32.const 0 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store local.get $0 local.get $1 - call $~lib/rt/itcms/__link + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $0 + i32.store local.get $1 - i32.store offset=8 local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + local.get $1 local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + local.get $1 local.get $0 - i32.const 0 - i32.store offset=16 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store + local.get $1 local.get $0 - i32.const 0 - i32.store offset=20 + i32.load offset=4 + i32.add + i32.load8_s global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9170,58 +9833,105 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 - i32.load + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $2 local.get $0 i32.load offset=4 - i32.and - i32.const 2 + local.get $1 + i32.const 3 i32.shl i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9243,54 +9953,56 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 + i32.store local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9305,177 +10017,77 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store + local.get $1 local.get $0 - i32.load offset=8 - local.set $4 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $4 + i32.store local.get $0 - i32.load offset=16 - i32.const 3 + i32.load offset=4 + local.get $1 + i32.const 2 i32.shl i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load - local.tee $8 - i32.store - local.get $2 - local.get $5 - local.get $1 - local.get $8 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - i32.store offset=4 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|0 - end - end + i32.load global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 0 + i32.store local.get $0 local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 + i32.const 1 + i32.const 0 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.store local.get $0 + local.get $1 i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9490,165 +10102,109 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $1 + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + local.tee $3 + i32.const 1 + i32.const 1 + call $~lib/array/ensureCapacity global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9688,19 +10244,19 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + f64.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9715,135 +10271,125 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u local.get $1 - i32.xor - call $~lib/set/Set#find - local.tee $1 - i32.eqz + local.get $0 + i32.load offset=12 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1248 + i32.const 1616 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - i32.const 1 + i32.const 2 + i32.shl i32.add + f32.load + global.get $~lib/memory/__stack_pointer i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - local.get $2 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 34516 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/set/Set#rehash + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 8 + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 i32.add - global.set $~lib/memory/__stack_pointer + global.set $~lib/rt/itcms/threshold ) - (func $std/set/testNumeric - (local $0 i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -9852,148 +10398,257 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.const 20 - memory.fill + i32.store offset=4 global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 100 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 134217727 + i32.gt_u if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 call $~lib/builtins/abort unreachable end - i32.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - i32.const 100 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has + local.get $3 + local.get $2 + i32.const 4 + i32.shl + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f64.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|1 + local.set $2 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub + i32.add global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1748 i32.lt_s @@ -10002,15 +10657,15 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=8 - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.load offset=16 local.set $5 global.get $~lib/memory/__stack_pointer @@ -10030,7 +10685,7 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 15 + i32.const 21 call $~lib/rt/itcms/__new local.tee $6 i32.store @@ -10122,14 +10777,12 @@ global.set $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 - i32.const 0 - local.set $0 - loop $for-loop|00 + loop $for-loop|0 local.get $2 local.get $5 i32.lt_s if - local.get $4 + local.get $3 local.get $2 i32.const 3 i32.shl @@ -10143,114 +10796,131 @@ global.get $~lib/memory/__stack_pointer local.get $6 i32.store + local.get $1 + local.tee $0 + i32.const 1 + i32.add + local.set $1 + local.get $7 + f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $6 + i32.store local.get $0 - local.get $7 - i32.load - call $~lib/array/Array#__set + local.get $6 + i32.load offset=12 + i32.ge_u + if + local.get $0 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.get $0 + i32.const 1 + i32.add + local.tee $7 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $7 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.load offset=4 local.get $0 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $0 + local.get $4 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|00 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer local.get $6 i32.store local.get $6 - local.get $0 + local.get $1 call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|2 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $1 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=16 - local.get $0 - local.get $6 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - local.set $0 + i32.const 1748 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end i32.const 0 - local.set $0 - loop $for-loop|3 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 local.get $0 - i32.const 50 + i32.const 100 i32.lt_u if global.get $~lib/memory/__stack_pointer @@ -10258,12 +10928,11 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#has - i32.eqz + call $~lib/set/Set#has if i32.const 0 i32.const 1568 - i32.const 31 + i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable @@ -10273,17 +10942,18 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#delete + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#has + call $~lib/set/Set#has + i32.eqz if i32.const 0 i32.const 1568 - i32.const 33 + i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable @@ -10292,7 +10962,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer @@ -10300,21 +10970,21 @@ i32.store offset=4 local.get $1 call $~lib/set/Set#get:size - i32.const 50 + i32.const 100 i32.ne if i32.const 0 i32.const 1568 - i32.const 35 + i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 50 local.set $0 - loop $for-loop|4 + loop $for-loop|1 local.get $0 - i32.const 50 + i32.const 100 i32.lt_u if global.get $~lib/memory/__stack_pointer @@ -10322,32 +10992,12 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 i32.const 1568 - i32.const 41 + i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable @@ -10357,1086 +11007,482 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#delete + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $0 - call $~lib/set/Set#has + call $~lib/set/Set#has + i32.eqz if i32.const 0 i32.const 1568 - i32.const 43 + i32.const 16 i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|4 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 16 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable + end local.get $0 - return + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 i32.ne if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i64.load - local.tee $6 - i64.store - local.get $2 - local.get $5 - local.get $1 - local.get $6 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=8 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $4 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - call $~lib/set/Set#find - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load8_u + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 i32.store + local.get $6 local.get $0 - i32.load offset=16 + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $6 i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=4 - else + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 i32.const 1 - i32.or + i32.add + local.set $2 + br $for-loop|2 end - call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 4 - i32.shl - i32.add - local.tee $3 - local.get $1 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + call $~lib/set/Set#get:size + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - i32.lt_s + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - i32.const 1248 - i32.const 1616 - i32.const 130 - i32.const 22 + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.const 0 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer return end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + i32.const 34544 + i32.const 34592 i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) (local $1 i32) (local $2 i64) @@ -11461,20 +11507,20 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $1 i32.store loop $for-loop|0 local.get $2 i64.const 100 - i64.lt_s + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -11488,13 +11534,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11531,14 +11577,14 @@ loop $for-loop|1 local.get $2 i64.const 100 - i64.lt_s + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11553,13 +11599,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11635,7 +11681,7 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 17 + i32.const 19 call $~lib/rt/itcms/__new local.tee $8 i32.store @@ -11776,7 +11822,7 @@ local.get $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $0 i32.store offset=12 i32.const 0 @@ -11799,8 +11845,8 @@ local.get $1 local.get $8 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11819,8 +11865,8 @@ local.get $0 local.get $8 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add + call $~lib/array/Array#__get + call $~lib/set/Set#add local.get $3 i32.const 1 i32.add @@ -11854,14 +11900,14 @@ loop $for-loop|3 local.get $2 i64.const 50 - i64.lt_s + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11876,13 +11922,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#delete + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -11918,14 +11964,14 @@ loop $for-loop|4 local.get $2 i64.const 50 - i64.lt_s + i64.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -11939,13 +11985,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -11960,13 +12006,13 @@ i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#delete + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -12028,844 +12074,607 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/set/Set#constructor (result i32) + (func $std/set/testNumeric (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 18 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $0 - i64.load - i64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + local.set $0 + br $for-loop|1 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 i32.ne if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i64.load - local.tee $6 - i64.store - local.get $2 - local.get $5 - local.get $1 - local.get $6 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - i32.const 15 - i32.shr_u - local.get $9 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - i32.const 13 - i32.shr_u - local.get $9 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - i32.const 16 - i32.shr_u - local.get $9 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=8 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $4 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - call $~lib/set/Set#find - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store + local.get $6 local.get $0 - i32.load offset=16 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.eq + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 local.get $0 - i32.load offset=12 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 local.get $0 - i32.load offset=4 - else + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl i32.const 1 - i32.or + i32.add + local.set $0 + br $for-loop|4 end - call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 4 - i32.shl - i32.add - local.tee $3 local.get $1 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end - if + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/set/Set#rehash + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) (local $1 i32) - (local $2 i64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -12880,20 +12689,20 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $1 i32.store loop $for-loop|0 - local.get $2 - i64.const 100 - i64.lt_u + local.get $0 + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -12906,14 +12715,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#add + local.get $0 + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -12923,10 +12732,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|0 end end @@ -12945,19 +12754,19 @@ call $~lib/builtins/abort unreachable end - i64.const 50 - local.set $2 + i32.const 50 + local.set $0 loop $for-loop|1 - local.get $2 - i64.const 100 - i64.lt_u + local.get $0 + i32.const 100 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -12971,14 +12780,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#add + local.get $0 + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -12988,10 +12797,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|1 end end @@ -13030,13 +12839,13 @@ i32.store local.get $1 i32.load offset=8 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 i32.load offset=16 - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16 @@ -13054,39 +12863,39 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 19 + i32.const 11 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 i32.const 0 i32.store - local.get $8 + local.get $6 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 i32.const 0 i32.store offset=12 - local.get $6 - i32.const 134217727 + local.get $5 + i32.const 536870910 i32.gt_u if i32.const 1456 @@ -13098,128 +12907,130 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - local.get $6 - local.get $6 + local.get $5 + local.get $5 i32.const 8 i32.le_u select - i32.const 3 + i32.const 1 i32.shl - local.tee $9 + local.tee $0 i32.const 1 call $~lib/rt/itcms/__new local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $7 i32.store offset=12 - local.get $8 + local.get $6 local.get $7 i32.store - local.get $8 + local.get $6 local.get $7 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 - local.get $9 + local.get $6 + local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 local.get $6 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 + i32.const 0 + local.set $0 loop $for-loop|00 - local.get $3 - local.get $6 + local.get $2 + local.get $5 i32.lt_s if - local.get $5 - local.get $3 - i32.const 4 + local.get $4 + local.get $2 + i32.const 3 i32.shl i32.add local.tee $7 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store - local.get $8 + local.get $6 local.get $0 local.get $7 - i64.load - call $~lib/array/Array#__set + i32.load16_u + call $~lib/array/Array#__set local.get $0 i32.const 1 i32.add local.set $0 end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|00 end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store - local.get $8 + local.get $6 local.get $0 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $0 i32.store offset=12 i32.const 0 - local.set $3 + local.set $2 loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=4 - local.get $8 + local.get $6 call $~lib/array/Array#get:length - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=16 local.get $1 - local.get $8 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -13233,17 +13044,17 @@ local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $6 i32.store offset=16 local.get $0 - local.get $8 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|2 end end @@ -13268,19 +13079,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 + i32.const 0 + local.set $0 loop $for-loop|3 - local.get $2 - i64.const 50 - i64.lt_u + local.get $0 + i32.const 50 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -13294,14 +13105,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#delete + local.get $0 + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -13310,10 +13121,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i64.const 1 - i64.add - local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 br $for-loop|3 end end @@ -13332,19 +13143,19 @@ call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $2 + i32.const 0 + local.set $0 loop $for-loop|4 - local.get $2 - i64.const 50 - i64.lt_u + local.get $0 + i32.const 50 + i32.lt_u if global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -13357,14 +13168,14 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#add + local.get $0 + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -13378,2171 +13189,2010 @@ local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#delete + local.get $0 + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - local.get $2 - call $~lib/set/Set#has + local.get $0 + call $~lib/set/Set#has if i32.const 0 i32.const 1568 i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i64.const 1 - i64.add - local.set $2 - br $for-loop|4 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 20 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - f32.load - f32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + local.set $0 + br $for-loop|4 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 i32.ne if - local.get $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s if - local.get $2 - local.get $4 - f32.load - local.tee $8 - f32.store - local.get $2 - local.get $5 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $8 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $9 - local.get $9 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $9 - local.get $9 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $9 - local.get $9 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + local.tee $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 i32.shl i32.add - local.tee $9 - i32.load + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load8_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $9 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 local.get $2 - i32.store + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 local.get $2 - i32.const 8 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 i32.add local.set $2 + br $for-loop|2 end - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 - call $~lib/set/Set#find - i32.eqz - if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=16 + call $~lib/set/Set#get:size + local.set $0 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $3 - local.get $0 - i32.load offset=12 + i32.const 0 + i32.const 1568 + i32.const 27 i32.const 3 - i32.mul - i32.const 4 - i32.div_s + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 i32.lt_s - if (result i32) + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 local.get $0 - i32.load offset=4 - else + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl i32.const 1 - i32.or + i32.add + local.set $0 + br $for-loop|3 end - call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $3 local.get $1 - f32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $3 - local.get $4 - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $3 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 - local.set $5 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 21 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 i32.store offset=4 - local.get $6 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.store offset=8 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 - i32.const 0 - i32.store offset=12 - local.get $5 - i32.const 268435455 - i32.gt_u + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - i32.const 1456 - i32.const 1616 - i32.const 70 - i32.const 60 + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - local.get $5 - local.get $5 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=12 - local.get $6 - local.get $7 - i32.store - local.get $6 - local.get $7 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - local.get $7 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 - local.get $0 - i32.store offset=8 + local.get $1 + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 - local.get $5 - i32.store offset=12 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 + return + end + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store loop $for-loop|0 local.get $2 - local.get $5 - i32.lt_s + i64.const 100 + i64.lt_s if - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $7 - i32.load offset=4 - i32.const 1 - i32.and + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $7 - f32.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.load offset=12 - i32.ge_u - if - local.get $0 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $0 - i32.const 1 - i32.add - local.tee $7 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $7 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $2 + loop $for-loop|1 + local.get $2 + i64.const 100 + i64.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 local.get $2 - i32.const 1 - i32.add + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add local.set $2 - br $for-loop|0 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 local.get $1 - call $~lib/array/Array#set:length + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 - i32.add + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub global.set $~lib/memory/__stack_pointer - return - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $3 - local.get $3 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $8 i32.store - local.get $0 - i32.load offset=20 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else + local.get $8 i32.const 0 - end - if + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $0 - i32.store - loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.store offset=12 + local.get $6 + i32.const 134217727 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $6 + local.get $6 + i32.const 8 + i32.le_u + select + i32.const 3 + i32.shl + local.tee $9 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $8 + local.get $7 + i32.store + local.get $8 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $9 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + loop $for-loop|00 + local.get $3 + local.get $6 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $3 + i32.const 4 + i32.shl + i32.add + local.tee $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $7 + i64.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|00 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|0 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - f32.const 100 - f32.lt - if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $8 i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz + local.get $8 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $1 + local.get $8 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $0 + local.get $8 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|3 + local.get $2 + i64.const 50 + i64.lt_s if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|3 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|1 end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/set/Set#values - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor - local.tee $4 - i32.store offset=12 - loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=4 - local.get $3 - call $~lib/array/Array#get:length - local.get $2 - i32.gt_s + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $2 + loop $for-loop|4 local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i64.const 50 + i64.lt_s if - i32.const 0 - i32.const 1568 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i64.const 1 + i64.add + local.set $2 + br $for-loop|4 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $4 - local.get $3 - local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 end - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - call $~lib/set/Set#get:size - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - local.get $2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|3 + global.get $~lib/memory/__stack_pointer local.get $1 - f32.const 50 - f32.lt + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|3 + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $1 - loop $for-loop|4 + global.get $~lib/memory/__stack_pointer local.get $1 - f32.const 50 - f32.lt + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#add - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#delete - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|4 + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#clear - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/set/Set#get:size - if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/set/Set#constructor (result i32) + (func $std/set/testNumeric (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 22 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $0 - f64.load - f64.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + local.set $0 + br $for-loop|1 end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - call $~lib/set/Set#find - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 i64) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $4 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 i32.ne if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - f64.load - local.tee $8 - f64.store - local.get $2 - local.get $5 - local.get $1 - local.get $8 - i64.reinterpret_f64 - local.tee $9 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $9 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $10 - i32.const 15 - i32.shr_u - local.get $10 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $10 - i32.const 13 - i32.shr_u - local.get $10 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $10 - i32.const 16 - i32.shr_u - local.get $10 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $10 - i32.load - i32.store offset=8 - local.get $10 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $4 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.store offset=12 + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $0 - local.get $5 - i32.store - local.get $0 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $5 + local.get $5 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $6 + local.get $7 + i32.store + local.get $6 + local.get $7 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store + local.get $6 local.get $0 - i32.load offset=16 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.eq + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $4 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 local.get $0 - i32.load offset=12 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 i32.const 3 - i32.mul - i32.const 4 - i32.div_s + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 i32.lt_s - if (result i32) + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 local.get $0 - i32.load offset=4 - else + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl i32.const 1 - i32.or + i32.add + local.set $0 + br $for-loop|4 end - call $~lib/set/Set#rehash end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 4 - i32.shl - i32.add - local.tee $4 local.get $1 - f64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 + local.get $1 + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $5 + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $4 - local.get $5 - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + i32.const 20 i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $4 - i32.store + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $std/set/testNumeric + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1748 i32.lt_s @@ -15551,15 +15201,15 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=8 - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=16 local.set $5 global.get $~lib/memory/__stack_pointer @@ -15579,7 +15229,7 @@ i64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 23 + i32.const 9 call $~lib/rt/itcms/__new local.tee $6 i32.store @@ -15611,7 +15261,7 @@ i32.const 0 i32.store offset=12 local.get $5 - i32.const 134217727 + i32.const 536870910 i32.gt_u if i32.const 1456 @@ -15628,7 +15278,7 @@ i32.const 8 i32.le_u select - i32.const 3 + i32.const 1 i32.shl local.tee $0 i32.const 1 @@ -15671,112 +15321,300 @@ global.set $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 - loop $for-loop|0 + i32.const 0 + local.set $0 + loop $for-loop|00 local.get $2 local.get $5 i32.lt_s if - local.get $3 + local.get $4 local.get $2 - i32.const 4 + i32.const 3 i32.shl i32.add local.tee $7 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.and i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $7 - f64.load - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + local.get $7 + i32.load16_s + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $1 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $0 + local.get $6 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|3 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|4 + local.get $0 + i32.const 50 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/set/Set#has + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $0 - local.get $6 - i32.load offset=12 - i32.ge_u - if - local.get $0 - i32.const 0 - i32.lt_s - if - i32.const 1248 - i32.const 1616 - i32.const 130 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $6 - local.get $0 - i32.const 1 - i32.add - local.tee $7 - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $7 - i32.store offset=12 - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.load offset=4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $0 + br $for-loop|4 end end global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 local.get $1 - call $~lib/array/Array#set:length + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/set/Set#get:size + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 return end i32.const 34544 @@ -15786,10 +15624,14 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) + (func $std/set/testNumeric + (local $0 i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15804,193 +15646,394 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.ge_u + call $~lib/set/Set#get:size + i32.const 100 + i32.ne if - i32.const 1248 - i32.const 1616 - i32.const 114 - i32.const 42 + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load + call $~lib/set/Set#values + local.tee $3 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) - (local $2 i64) - (local $3 i32) - (local $4 i32) + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=12 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $0 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $4 + local.get $3 + local.get $2 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 + end + end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/set/Set#get:size + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#get:size + local.get $2 + i32.ne if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - i32.const 15 - i32.shr_u - local.get $3 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - i32.const 13 - i32.shr_u - local.get $3 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - i32.const 16 - i32.shr_u - local.get $3 - i32.xor - call $~lib/set/Set#find - local.tee $3 - i32.eqz + call $~lib/set/Set#get:size + i32.const 50 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|4 + end end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + call $~lib/set/Set#get:size + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $3 + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $3 - i32.const 1 - i32.add - i32.const 4 + i32.store offset=4 local.get $0 - i32.load offset=20 - local.tee $4 - local.get $4 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end + call $~lib/set/Set#get:size if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $3 - call $~lib/set/Set#rehash + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) - (local $1 f64) + (local $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16014,20 +16057,20 @@ i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $0 i32.store loop $for-loop|0 local.get $1 - f64.const 100 - f64.lt + f32.const 100 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -16041,13 +16084,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16058,8 +16101,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|0 end @@ -16079,19 +16122,19 @@ call $~lib/builtins/abort unreachable end - f64.const 50 + f32.const 50 local.set $1 loop $for-loop|1 local.get $1 - f64.const 100 - f64.lt + f32.const 100 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16106,13 +16149,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16123,8 +16166,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|1 end @@ -16149,11 +16192,11 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#values + call $~lib/set/Set#values local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - call $~lib/set/Set#constructor + call $~lib/set/Set#constructor local.tee $4 i32.store offset=12 loop $for-loop|2 @@ -16174,8 +16217,8 @@ local.get $0 local.get $3 local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#has + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16194,8 +16237,8 @@ local.get $4 local.get $3 local.get $2 - call $~lib/array/Array#__get - call $~lib/set/Set#add + call $~lib/array/Array#__get + call $~lib/set/Set#add local.get $2 i32.const 1 i32.add @@ -16224,19 +16267,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|3 local.get $1 - f64.const 50 - f64.lt + f32.const 50 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16251,13 +16294,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -16267,8 +16310,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|3 end @@ -16288,19 +16331,19 @@ call $~lib/builtins/abort unreachable end - f64.const 0 + f32.const 0 local.set $1 loop $for-loop|4 local.get $1 - f64.const 50 - f64.lt + f32.const 50 + f32.lt if global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -16314,13 +16357,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#add + call $~lib/set/Set#add global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -16335,13 +16378,13 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 i32.const 1568 @@ -16351,8 +16394,8 @@ unreachable end local.get $1 - f64.const 1 - f64.add + f32.const 1 + f32.add local.set $1 br $for-loop|4 end @@ -16376,7 +16419,7 @@ local.get $0 i32.store offset=4 local.get $0 - call $~lib/set/Set#clear + call $~lib/set/Set#clear global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 @@ -16395,46 +16438,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s - if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 1456 - i32.const 1504 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/std/static-array.release.wat b/tests/compiler/std/static-array.release.wat index 263534f48a..14b3ca07e7 100644 --- a/tests/compiler/std/static-array.release.wat +++ b/tests/compiler/std/static-array.release.wat @@ -4,12 +4,12 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) - (type $8 (func (param i32) (result i64))) - (type $9 (func (param i32) (result f32))) - (type $10 (func (param i32) (result f64))) + (type $5 (func (param i32) (result i64))) + (type $6 (func (param i32) (result f64))) + (type $7 (func (param i32) (result f32))) + (type $8 (func (param i32 i32) (result i32))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -59,193 +59,6 @@ (data $19 (i32.const 1952) "\08\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\02\t\00\00\02\n\00\00\02\19\00\00\02\1a") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1184 - call $~lib/rt/itcms/__visit - i32.const 1264 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1472 - call $~lib/rt/itcms/__visit - i32.const 1584 - call $~lib/rt/itcms/__visit - i32.const 1632 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$155 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 34756 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$155 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1952 - i32.load - i32.gt_u - if - i32.const 1472 - i32.const 1824 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 1956 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz @@ -270,900 +83,842 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s if - i32.const 0 - i32.const 1904 - i32.const 268 - i32.const 14 + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $1 + i32.shr_u + i32.eqz if - i32.const 0 - i32.const 1904 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 + i32.shr_u i32.eqz if - local.get $0 + i32.const 1584 + i32.const 1536 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$145 + i32.const 1073741820 local.get $2 - i32.const 2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 i32.shl - i32.add local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$145 + end + local.get $4 + i32.load offset=12 + local.set $6 local.get $3 - i32.store offset=4 - local.get $3 + i32.const 1073741804 + i32.ge_u + if + i32.const 1632 + i32.const 1696 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $7 + local.get $3 + i32.const 16 + i32.add + local.tee $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1632 + i32.const 1904 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - i32.store + i32.const 4 + i32.sub end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1904 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1904 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1904 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1904 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1904 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34768 - i32.const 0 - i32.store - i32.const 36336 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 34768 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + local.tee $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $8 + i32.const 256 + i32.ge_u + if (result i32) + local.get $8 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $8 + i32.const 1 + i32.const 27 + local.get $8 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $8 + end + else + local.get $8 + end + i32.const 4 + local.get $7 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $5 + local.get $1 + local.get $5 + local.get $1 + local.get $5 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $5 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $7 local.get $1 i32.const 16 - i32.lt_u + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $7 + local.get $8 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34768 - i32.add i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 1904 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - local.get $0 - i32.const 1 + local.get $8 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $9 + local.get $8 + i32.const 4 i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34768 - i32.const 36340 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34768 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state + i32.const 15 + i32.and + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + i32.const 1904 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 + local.get $9 i32.const -4 i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end + local.get $8 + i32.sub + local.tee $5 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $8 + local.get $9 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $8 + i32.add + local.tee $8 + local.get $5 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $7 + local.get $8 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $9 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $5 + i32.load + i32.const -3 + i32.and + i32.store end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + local.get $1 + local.get $6 + i32.store offset=12 + local.get $1 + local.get $3 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $5 + i32.load offset=8 + local.set $6 + local.get $1 + local.get $5 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + local.get $6 + local.get $1 + local.get $6 i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $5 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load i32.const -4 i32.and - i32.eq + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $3 + memory.fill + local.get $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $1 if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34756 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.set $0 - loop $while-continue|2 + i32.eq + if local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq if local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $2 i32.const 3 + i32.eq i32.and - i32.ne if - local.get $0 - local.get $2 - i32.const -4 - i32.and local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members + call $~lib/rt/itcms/Object#makeGray end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 end end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state end - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1904 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 - i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add local.tee $1 - i32.const -4 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz + local.set $3 local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1696 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34756 - i32.lt_u + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total local.get $0 i32.load - i32.const -4 + i32.const -2 + local.get $2 + i32.rotl i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34756 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1904 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + i32.store end - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1904 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1904 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub local.get $1 + i32.store + local.get $2 i32.const 256 i32.lt_u - if - local.get $1 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 - local.get $1 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $2 i32.const 16 i32.lt_u - local.get $2 + local.get $5 i32.const 23 i32.lt_u i32.and @@ -1171,78 +926,198 @@ if i32.const 0 i32.const 1904 - i32.const 334 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add i32.const 2 i32.shl i32.add - i32.load offset=4 - i32.const -1 + i32.load offset=96 + local.set $3 local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$155 local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl + i32.load offset=4 + i32.const -4 i32.and local.tee $1 - if (result i32) + i32.eqz + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 34756 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 1904 - i32.const 347 + i32.const 1696 + i32.const 128 i32.const 18 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else + br $__inlined_func$~lib/rt/itcms/Object#unlink$155 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if i32.const 0 + i32.const 1696 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1952 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1824 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 2 + i32.shl + i32.const 1956 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -1299,10 +1174,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:std/static-array - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/array/Array#__get (param $0 i32) (result i64) + (local $1 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1322,10 +1195,30 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store local.get $0 + i32.const 1196 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1184 i32.store + i32.const 1188 + i32.load local.get $0 - i32.load offset=12 + i32.const 3 + i32.shl + i32.add + i64.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1380,15 +1273,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + (func $~lib/array/Array#__get (param $0 i32) (result f64) + (local $1 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1408,609 +1294,724 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store local.get $0 + i32.const 1372 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1360 i32.store + i32.const 1364 + i32.load local.get $0 - i32.load offset=8 - local.tee $2 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (result f32) + (local $1 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1988 + i32.lt_s + if + i32.const 34784 + i32.const 34832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + local.get $0 + i32.const 1276 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1268 + i32.load + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.shr_u - i32.eqz + i32.const 256 + i32.lt_u if - i32.const 1073741820 local.get $1 + i32.const 4 i32.shr_u - i32.eqz + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 1584 - i32.const 1536 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$145 - i32.const 1073741820 - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.const 8 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.shl + i32.ctz local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $3 - local.get $0 - i32.load + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.tee $2 - i32.const 20 - i32.sub - local.tee $4 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $4 - local.get $3 - i32.store offset=16 - local.get $2 - local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$145 - end - local.get $4 - i32.load offset=12 - local.set $6 - local.get $3 - i32.const 1073741804 - i32.ge_u - if - i32.const 1632 - i32.const 1696 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT i32.eqz if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $7 - local.get $3 - i32.const 16 - i32.add - local.tee $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 1632 + i32.const 0 i32.const 1904 - i32.const 461 - i32.const 29 + i32.const 347 + i32.const 18 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 + local.get $2 + i32.ctz local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $8 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - local.get $8 - i32.const 256 - i32.ge_u - if (result i32) - local.get $8 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $8 - i32.const 1 - i32.const 27 - local.get $8 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $8 - end - else - local.get $8 - end - i32.const 4 - local.get $7 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $5 - local.get $1 - local.get $5 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $7 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34768 + i32.const 0 + i32.store + i32.const 36336 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34768 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $7 - local.get $8 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz + i32.lt_u if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34768 + i32.add i32.const 0 - i32.const 1904 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end end - local.get $8 - local.get $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34768 + i32.const 36340 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34768 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1904 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 i32.load - i32.const -4 + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 1264 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1584 + call $~lib/rt/itcms/__visit + i32.const 1632 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 i32.and - i32.gt_u + i32.const 3 + i32.ne if i32.const 0 - i32.const 1904 - i32.const 501 - i32.const 14 + i32.const 1696 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $7 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $9 - local.get $8 - i32.const 4 + local.get $0 + i32.const 20 i32.add - i32.const 15 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~start + call $start:std/static-array + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - if - i32.const 0 - i32.const 1904 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $9 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 i32.const -4 i32.and - local.get $8 - i32.sub - local.tee $5 - i32.const 16 - i32.ge_u + i32.eq if - local.get $1 - local.get $8 - local.get $9 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $8 - i32.add - local.tee $8 - local.get $5 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $7 - local.get $8 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $9 - i32.const -2 + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34756 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.store - local.get $1 - i32.const 4 - i32.add + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace local.get $1 - i32.load + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 i32.const -4 i32.and - i32.add - local.tee $5 - local.get $5 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - local.get $6 - i32.store offset=12 - local.get $1 - local.get $3 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $5 - i32.load offset=8 - local.set $6 - local.get $1 - local.get $5 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $6 - i32.store offset=8 - local.get $6 - local.get $1 - local.get $6 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $5 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $3 - memory.fill - local.get $1 - local.get $2 - local.get $3 - local.get $4 - i32.load offset=16 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_u - select - memory.copy + global.get $~lib/rt/itcms/visitCount + return end - local.get $1 - local.get $2 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace i32.ne if local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34756 + i32.lt_u if local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 i32.and - i32.eq + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34756 + i32.ge_u if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 20 + i32.const 4 i32.sub - i32.load offset=4 - i32.const 3 + local.set $2 + local.get $0 + i32.const 15 i32.and - local.tee $2 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state + i32.const 1 + local.get $0 + select + if (result i32) i32.const 1 - i32.eq + else local.get $2 - i32.const 3 - i32.eq + i32.load + i32.const 1 i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end end + if + i32.const 0 + i32.const 1904 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end + i32.const 10 + return end - local.get $0 - local.get $3 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (result i64) - (local $1 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1988 - i32.lt_s - if - i32.const 34784 - i32.const 34832 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store - local.get $0 - i32.const 1196 - i32.load - i32.ge_u - if - i32.const 1472 - i32.const 1536 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store - i32.const 1188 - i32.load - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (result f32) - (local $1 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1988 - i32.lt_s - if - i32.const 34784 - i32.const 34832 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1264 - i32.store - local.get $0 - i32.const 1276 - i32.load - i32.ge_u - if - i32.const 1472 - i32.const 1536 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1264 - i32.store - i32.const 1268 - i32.load - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#__get (param $0 i32) (result f64) - (local $1 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1988 - i32.lt_s - if - i32.const 34784 - i32.const 34832 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1360 - i32.store - local.get $0 - i32.const 1372 - i32.load - i32.ge_u - if - i32.const 1472 - i32.const 1536 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1360 - i32.store - i32.const 1364 - i32.load - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:std/static-array global.get $~lib/memory/__stack_pointer diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index f04e217e60..f83e7fdb29 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -5,12 +5,12 @@ (type $3 (func)) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32 i32 i32 i32) (result i32))) - (type $7 (func (param i32) (result i32))) + (type $6 (func (param i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32) (result i32))) (type $8 (func (param i32 i32 i32 i32))) (type $9 (func (result i32))) - (type $10 (func (param i32 i32 i64))) - (type $11 (func (param i32 i32 i32 i32 i32))) + (type $10 (func (param i32 i32 i32 i32 i32))) + (type $11 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -172,206 +172,169 @@ (elem $0 (i32.const 1) $start:std/staticarray~anonymous|0 $start:std/staticarray~anonymous|1 $start:std/staticarray~anonymous|2 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|7 $start:std/staticarray~anonymous|8 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $~lib/util/sort/COMPARATOR~anonymous|0) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1280 - call $~lib/rt/itcms/__visit - global.get $std/staticarray/arr3 - local.tee $0 + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 1344 + i32.const 1408 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - global.get $std/staticarray/arr4 - local.tee $0 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 1680 - call $~lib/rt/itcms/__visit - i32.const 2336 - call $~lib/rt/itcms/__visit - i32.const 1344 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 i32.const 0 - i32.const 1408 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - local.get $0 - i32.const 20 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1408 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$267 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 36728 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1408 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$267 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1408 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + call $~lib/rt/tlsf/initialize end - global.get $~lib/rt/itcms/toSpace - local.set $2 + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.load offset=12 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 3888 - i32.load - i32.gt_u - if - i32.const 1088 - i32.const 1536 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 3892 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.load offset=8 local.set $3 local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 + local.get $1 global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 i32.or i32.store offset=4 - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 - i32.eqz + memory.fill + local.get $1 + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if return end @@ -393,668 +356,1068 @@ global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 268 - i32.const 14 + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 1616 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + i32.ge_u + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end + i32.const 7 + i32.and + i32.or + else + i32.const 1 end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$106 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$106 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + i32.eqz + if + return + end + local.get $0 i32.eqz if i32.const 0 - i32.const 1616 - i32.const 203 + i32.const 1408 + i32.const 295 i32.const 14 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/itcms/white local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 i32.and + i32.eq if local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 + i32.const 20 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + local.tee $0 + i32.load offset=4 + i32.const 3 i32.and + local.tee $3 + global.get $~lib/rt/itcms/white i32.eqz + i32.eq if - i32.const 0 - i32.const 1616 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1616 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s if - i32.const 0 - i32.const 1616 - i32.const 234 - i32.const 14 + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + if + local.get $3 local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + local.get $4 + memory.copy end - local.tee $2 + local.get $3 + i32.store i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 i32.const 0 - i32.store offset=4 + call $~lib/rt/itcms/__link local.get $1 local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 i32.store offset=8 - local.get $3 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 2 - i32.shl - i32.add + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=96 + i32.store local.get $0 + local.get $2 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store + local.get $1 local.get $0 - local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add + i32.load local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1616 - i32.const 382 - i32.const 14 + i32.const 2336 + i32.const 1152 + i32.const 82 + i32.const 40 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const -16 - i32.and + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=1568 - local.tee $3 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return + i32.const 1088 + i32.const 1776 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 + i32.const 2 + i32.shl i32.add - local.get $3 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $3 - i32.const 2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - local.get $3 - i32.store offset=1568 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $4 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 i32.const 0 - i32.le_s + i32.lt_s if (result i32) - i32.const 1 local.get $1 - i32.sub - memory.grow + local.get $4 + i32.add + local.tee $1 i32.const 0 - i32.lt_s - else + local.get $1 i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select end - if - unreachable + local.tee $5 + i32.const 2 + i32.shl + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $4 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select end - i32.const 36736 + local.get $5 + i32.sub + local.tee $0 i32.const 0 - i32.store - i32.const 38304 + local.get $0 i32.const 0 - i32.store - loop $for-loop|0 + i32.gt_s + select + i32.const 2 + i32.shl + local.tee $0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + loop $while-continue|0 local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + i32.gt_u if - local.get $0 - i32.const 2 - i32.shl - i32.const 36736 + local.get $1 + local.get $2 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 36736 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 + local.get $1 + local.get $3 + i32.add + i32.load + local.tee $4 + i32.store + local.get $2 + local.get $4 i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 4 i32.add - local.set $0 - br $for-loop|0 + local.set $1 + br $while-continue|0 end end - i32.const 36736 - i32.const 38308 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 36736 - global.set $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/rt/tlsf/__free (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 36728 - i32.lt_u + (func $~lib/staticarray/StaticArray#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s if - return + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 i32.eqz if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and + local.get $2 + local.get $3 + i32.add + local.get $3 i32.const 1 - local.get $0 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s select - if (result i32) + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/staticarray/StaticArray#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 i32.const 1 - else - local.get $1 - i32.load i32.const 1 - i32.and + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return end + local.get $2 + i32.const 0 + i32.lt_s if + local.get $2 + local.get $3 + i32.add + local.tee $2 i32.const 0 - i32.const 1616 - i32.const 562 - i32.const 3 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return + unreachable end - global.get $~lib/rt/itcms/white - i32.eqz + i32.const 0 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $2 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $4 + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.ge_s + return + end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36736 + i32.const 0 + i32.store + i32.const 38304 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36736 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36736 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36736 + i32.const 38308 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36736 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 i32.const -4 i32.and local.set $0 @@ -1245,1006 +1608,988 @@ end i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $3 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.sub + i32.const 1 + i32.add + local.tee $4 + local.get $3 + i32.sub + i32.const 1 i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 + i32.sub + local.get $4 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $6 + loop $for-loop|0 local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) + local.get $6 + i32.ge_s + if local.get $0 - local.get $1 - i32.ctz - local.tee $1 + local.get $6 i32.const 2 i32.shl i32.add + local.tee $3 i32.load offset=4 - local.tee $2 - i32.eqz + local.tee $5 + local.set $4 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s if - i32.const 0 - i32.const 1616 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $3 + local.set $4 + local.get $5 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $7 + local.get $8 + i32.store offset=8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end end local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 + local.get $5 + i32.const 2 i32.shl i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $5 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $7 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + end + local.get $0 + local.get $5 i32.const 2 i32.shl i32.add - i32.load offset=96 - else - i32.const 0 + local.get $4 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s if - i32.const 1344 - i32.const 1616 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 12 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz if - memory.size - local.tee $1 - local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $3 - end - else - local.get $3 - end - i32.const 4 - local.get $0 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $1 - local.get $2 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const 1088 + i32.const 1152 + i32.const 93 + i32.const 41 + call $~lib/builtins/abort + unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 i32.load - i32.const -4 + local.tee $3 + i32.const 1 i32.and - i32.gt_u + i32.eqz if i32.const 0 i32.const 1616 - i32.const 501 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.set $4 local.get $3 - i32.const 4 - i32.add - i32.const 15 + i32.const -4 i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1616 - i32.const 361 + i32.const 270 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const -4 - i32.and local.get $3 - i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $1 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 - local.get $4 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 i32.const 4 - i32.add + i32.shr_u + else + i32.const 31 + i32.const 1073741820 local.get $3 - i32.add + local.get $3 + i32.const 1073741820 + i32.ge_u + select local.tee $3 - local.get $2 - i32.const 4 + i32.clz i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 + local.tee $4 + i32.const 7 + i32.sub + local.set $2 local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 local.get $4 - i32.const -2 - i32.and - i32.store - local.get $1 i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1344 - i32.const 1408 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1616 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 i32.load offset=8 - local.set $3 - local.get $2 + local.set $5 local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz + local.tee $4 if - return + local.get $4 + local.get $5 + i32.store offset=8 end - local.get $0 - i32.eqz + local.get $5 if - i32.const 0 - i32.const 1408 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $4 + i32.store offset=4 end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + i32.load offset=96 i32.eq if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 i32.eqz - i32.eq if local.get $0 - local.get $1 local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 local.get $3 - i32.const 3 - i32.eq + i32.rotl i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end end end ) - (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.add - ) - (func $start:std/staticarray~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) - global.get $std/staticarray/maxVal - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - global.set $std/staticarray/maxVal - ) - (func $start:std/staticarray~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/staticarray~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $start:std/staticarray~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.eq - ) - (func $start:std/staticarray~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 4 - i32.eq - ) - (func $start:std/staticarray~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.le_s - ) - (func $start:std/staticarray~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 3 - i32.gt_s - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $1 - local.get $3 - local.get $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.sub + i32.load + local.tee $3 i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and i32.add local.tee $4 - local.get $3 - i32.sub + i32.load + local.tee $2 i32.const 1 i32.and - i32.sub - local.get $4 - i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $6 - loop $for-loop|0 + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add local.get $2 - local.get $6 - i32.ge_s + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - local.tee $5 - local.set $4 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $5 - i32.const 3872 - i32.load - call_indirect (type $0) i32.const 0 - i32.le_s - if - local.get $3 - local.set $4 - local.get $5 - local.set $3 - end - local.get $6 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $5 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $3 - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $7 - i32.store offset=8 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - end - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $5 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $4 - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $7 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|2 - end - end - end - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $for-loop|0 + i32.const 1616 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 + local.get $4 local.get $2 - i32.eq + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if - local.get $1 - return + i32.const 0 + i32.const 1616 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 + local.get $4 local.get $1 - i32.const 1 + i32.const 4 i32.add - local.tee $3 - i32.const 2 - i32.shl + local.get $2 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.ne if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - local.get $4 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end + i32.const 0 + i32.const 1616 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $5 - local.get $4 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1344 + i32.const 1616 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 else - loop $while-continue|2 - local.get $2 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) local.get $3 - i32.gt_s + i32.const 536870910 + i32.lt_u if (result i32) - local.get $0 local.get $3 - i32.const 2 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub i32.shl i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s + i32.const 1 + i32.sub else - i32.const 0 - end - if local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 end + else + local.get $3 end - end - local.get $3 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $5 - local.get $3 - i32.add - local.set $6 - local.get $5 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $7 - local.get $4 - i32.add - local.get $0 - local.get $7 - i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $5 - i32.gt_s - if - local.get $4 - local.get $6 - local.get $5 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end - end - loop $for-loop|2 + i32.const 4 + local.get $0 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 local.get $1 - local.get $3 - i32.le_s + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $4 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - i32.const 3872 - i32.load - call_indirect (type $0) + memory.grow i32.const 0 i32.lt_s if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 + unreachable end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) + (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 + i32.const 36728 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 20 + i32.const 4 i32.sub - i32.load offset=16 - i32.add local.set $1 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1616 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$267 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 36728 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$267 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 3888 + i32.load + i32.gt_u + if + i32.const 1088 + i32.const 1536 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 2 + i32.shl + i32.const 3892 + i32.add + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2404,304 +2749,287 @@ call $~lib/builtins/abort unreachable ) - (func $~start - call $start:std/staticarray - ) - (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 78 - i32.const 41 - call $~lib/builtins/abort - unreachable - end + (func $start:std/staticarray~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.eq ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + (func $start:std/staticarray~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 2 - i32.shr_u + i32.eq + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $2 i32.const 1 - i32.le_u - if - i32.const 1088 - i32.const 1152 - i32.const 93 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/staticarray/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 + local.tee $5 + local.get $3 + i32.add + local.set $6 + local.get $5 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $7 + local.get $4 + i32.add + local.get $0 + local.get $7 + i32.add + i32.load i32.store + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return end - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $4 + local.get $6 + local.get $5 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/staticarray/StaticArray.fromArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + local.get $2 + i32.eq if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length + local.get $1 i32.const 2 i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.add + i32.load local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1088 - i32.const 1776 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + local.tee $3 i32.const 2 i32.shl i32.add i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + local.get $3 ) - (func $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -2734,11 +3062,7 @@ local.get $1 i32.store local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + call $~lib/array/Array#get:length local.tee $2 local.get $3 i32.add @@ -2753,172 +3077,134 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $0 local.get $3 i32.const 2 i32.shl - local.tee $0 - memory.copy + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.add - local.get $1 - local.get $2 - i32.const 2 - i32.shl - memory.copy + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $4 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 9 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + local.get $3 + i32.load offset=4 local.set $4 - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 + i32.load offset=4 + local.set $6 i32.const 0 - i32.lt_s - if (result i32) + local.set $1 + loop $for-loop|0 local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select + local.get $5 + i32.lt_u + if + local.get $1 + local.get $4 + i32.add + local.get $0 + local.get $1 + i32.add + i32.load + local.tee $7 + i32.store + local.get $3 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $for-loop|0 + end end - local.tee $5 - i32.const 2 - i32.shl + local.get $4 + local.get $5 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 0 local.set $1 - global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.get $5 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select i32.const 2 i32.shl - local.tee $0 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - loop $while-continue|0 + local.set $2 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - local.get $1 - i32.gt_u + local.get $2 + i32.lt_u if + local.get $0 local.get $1 - local.get $2 i32.add - local.get $1 - local.get $3 + local.get $0 + local.get $6 i32.add i32.load local.tee $4 i32.store - local.get $2 + local.get $3 local.get $4 i32.const 1 call $~lib/rt/itcms/__link - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 - br $while-continue|0 + local.set $0 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2937,19 +3223,97 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - i32.const 0 - local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - i32.const 2147483647 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/staticarray/StaticArray#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u local.set $2 end global.get $~lib/memory/__stack_pointer @@ -2958,15 +3322,17 @@ local.get $0 local.get $1 local.get $2 - call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> + call $~lib/staticarray/StaticArray#lastIndexOf global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2981,59 +3347,68 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 78 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 2336 - i32.const 1152 - i32.const 82 - i32.const 40 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const -1 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3048,156 +3423,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $2 local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) + i32.lt_s + if + local.get $0 local.get $2 - i32.const 7 - i32.and + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$106 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$106 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end + return end - i32.const 0 - local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + i32.const -1 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3212,8 +3497,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3224,252 +3509,55 @@ i32.const 2 i32.shr_u local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.tee $2 - local.get $3 - i32.add - local.tee $4 - i32.const 268435455 - i32.gt_u - if - i32.const 1680 - i32.const 1152 - i32.const 178 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 2 - i32.shl - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 9 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $1 loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_u + local.get $2 + local.get $3 + i32.lt_s if - local.get $1 - local.get $4 - i32.add local.get $0 - local.get $1 + local.get $2 + i32.const 2 + i32.shl i32.add i32.load - local.tee $7 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $3 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $4 - local.get $5 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.shl - local.set $2 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_u - if + i32.const 3 + global.set $~argumentsLength + local.get $2 local.get $0 local.get $1 - i32.add - local.get $0 - local.get $6 - i32.add i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $3 + call_indirect (type $1) i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $2 - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $4 - local.get $1 - call $~lib/string/String.__eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $2 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.ge_s - return end - i32.const 36752 - i32.const 36800 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/staticarray/StaticArray#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3484,8 +3572,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -3495,162 +3583,67 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - ) - (func $~lib/staticarray/StaticArray#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 - i32.eqz + local.tee $2 + local.get $3 + i32.add + local.tee $4 + i32.const 268435455 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return + i32.const 1680 + i32.const 1152 + i32.const 178 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 local.get $3 + i32.const 2 + i32.shl + local.tee $0 + memory.copy + local.get $0 + local.get $4 i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select + local.get $1 local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end + i32.const 2 + i32.shl + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $4 ) - (func $~lib/staticarray/StaticArray#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray.fromArray (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3665,707 +3658,425 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $2 - end + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 + call $~lib/array/Array#get:length + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $2 - call $~lib/staticarray/StaticArray#lastIndexOf + local.get $0 + i32.load offset=4 + local.get $1 + memory.copy global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 1 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s + i32.const 256 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2928 - return - end - local.get $5 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 2928 - local.get $0 - select - return - end - loop $for-loop|0 local.get $1 - local.get $4 - i32.gt_s + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub i32.shl i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $3 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $3 - end - local.get $4 i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + i32.sub + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - i32.const 0 - local.set $4 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 16 + i32.lt_u local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $5 - i32.mul + i32.const 2 + i32.shl i32.add - i32.const 1 + i32.load offset=4 + i32.const -1 + local.get $1 i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=12 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - local.get $3 + local.get $1 + i32.ctz + local.tee $1 i32.const 2 i32.shl i32.add - i32.load - local.tee $7 - i32.store offset=4 - local.get $7 + i32.load offset=4 + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $6 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $7 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 1 - i32.shl - memory.copy - local.get $4 - local.get $7 - i32.add - local.set $4 + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz local.get $1 - if - local.get $6 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $4 - end - local.get $3 - i32.const 1 + i32.const 4 + i32.shl i32.add - local.set $3 - br $for-loop|1 + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $6 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1616 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $0 - local.get $2 local.get $1 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/staticarray/StaticArray#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const -16 + i32.and + i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - local.tee $10 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 3 - global.set $~argumentsLength - local.get $8 - local.get $9 - local.get $0 - i32.const 3472 - i32.load - call_indirect (type $1) - if - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - i32.load offset=12 - local.tee $6 - i32.const 1 - i32.add - local.tee $5 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $3 - local.get $10 - i32.load offset=8 - local.tee $1 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1680 - i32.const 1776 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - block $__inlined_func$~lib/rt/itcms/__renew$224 - i32.const 1073741820 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - local.get $1 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.const 8 - local.get $3 - local.get $3 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $4 - local.get $10 - i32.load - local.tee $1 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $3 - local.get $4 - i32.store offset=16 - local.get $1 - local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$224 - end - local.get $4 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 - local.get $4 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_u - select - memory.copy - end - local.get $1 - local.get $2 - i32.ne - if - local.get $10 - local.get $2 - i32.store - local.get $10 - local.get $2 - i32.store offset=4 - local.get $10 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $10 - local.get $4 - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - i32.load offset=4 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store - local.get $10 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return end - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/staticarray/StaticArray#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $3 + i32.store offset=1568 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + global.get $std/staticarray/arr3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1680 + call $~lib/rt/itcms/__visit + i32.const 2336 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne if local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load offset=4 i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) + i32.and + i32.const 3 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + i32.const 0 + i32.const 1408 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.const 1 + local.get $0 + i32.const 20 i32.add - local.set $2 - br $for-loop|0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/staticarray/StaticArray#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $std/staticarray/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3960 i32.lt_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 36752 + i32.const 36800 i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/staticarray/StaticArray#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $start:std/staticarray~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $~start + call $start:std/staticarray + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4380,134 +4091,201 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2928 + return + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2928 + local.get $0 + select + return + end loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s + local.get $1 + local.get $4 + i32.gt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + local.get $4 i32.const 2 i32.shl i32.add i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) + local.tee $6 + i32.store offset=4 + local.get $6 if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $6 + i32.store offset=8 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return + local.set $3 end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - ) - (func $~lib/staticarray/StaticArray#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 i32.const 20 i32.sub i32.load offset=16 - i32.const 2 + i32.const 1 i32.shr_u + local.tee $1 + local.get $5 + i32.mul + i32.add i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $5 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) + local.tee $7 + i32.store offset=4 + local.get $7 if global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $7 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $7 + i32.add + local.set $4 + end + local.get $1 + if + local.get $6 + local.get $4 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - return + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $4 end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $6 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $6 ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (local $2 i32) @@ -4821,132 +4599,419 @@ i32.gt_u if local.get $1 - i32.const 2 - i32.shl - local.tee $13 - local.get $9 - i32.add - local.tee $14 - i32.load - local.tee $7 - i32.const -1 + i32.const 2 + i32.shl + local.tee $13 + local.get $9 + i32.add + local.tee $14 + i32.load + local.tee $7 + i32.const -1 + i32.ne + if + local.get $10 + local.get $13 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + local.get $7 + local.get $2 + local.get $4 + local.get $11 + call $~lib/util/sort/mergeRuns + local.get $14 + i32.const -1 + i32.store + local.get $7 + local.set $2 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $6 + i32.const 2 + i32.shl + local.tee $1 + local.get $9 + i32.add + local.get $2 + i32.store + local.get $1 + local.get $10 + i32.add + local.get $4 + i32.store + local.get $5 + local.set $2 + local.get $3 + local.set $4 + local.get $6 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $9 + i32.add + i32.load + local.tee $3 + i32.const -1 + i32.ne + if + local.get $2 + local.get $10 + i32.add + i32.load + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + local.get $0 + local.get $3 + local.get $2 + local.get $8 + local.get $11 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $11 + call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/staticarray/StaticArray#filter (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $10 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $9 + i32.gt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $8 + local.get $9 + local.get $0 + i32.const 3472 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $5 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $3 + local.get $10 + i32.load offset=8 + local.tee $1 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $3 + i32.const 268435455 + i32.gt_u + if + i32.const 1680 + i32.const 1776 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$224 + i32.const 1073741820 + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + local.get $1 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $3 + local.get $3 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $4 + local.get $10 + i32.load + local.tee $1 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $4 + i32.store offset=16 + local.get $1 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$224 + end + local.get $4 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $1 + local.get $4 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_u + select + memory.copy + end + local.get $1 + local.get $2 i32.ne if local.get $10 - local.get $13 - i32.add - i32.load - i32.const 1 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store - local.get $0 - local.get $7 local.get $2 - local.get $4 - local.get $11 - call $~lib/util/sort/mergeRuns - local.get $14 - i32.const -1 i32.store - local.get $7 - local.set $2 + local.get $10 + local.get $2 + i32.store offset=4 + local.get $10 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 + local.get $10 + local.get $4 + i32.store offset=8 end - end - local.get $6 - i32.const 2 - i32.shl - local.tee $1 - local.get $9 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $10 - i32.add - local.get $4 - i32.store - local.get $5 - local.set $2 - local.get $3 - local.set $4 - local.get $6 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $2 - local.get $9 - i32.add - i32.load - local.tee $3 - i32.const -1 - i32.ne - if - local.get $2 - local.get $10 - i32.add - i32.load - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3872 + local.get $10 i32.store - local.get $0 - local.get $3 - local.get $2 + local.get $10 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add local.get $8 - local.get $11 - call $~lib/util/sort/mergeRuns + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $1 + local.get $9 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $9 + br $for-loop|0 end end - local.get $11 - call $~lib/rt/tlsf/__free - local.get $9 - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $10 return end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:std/staticarray~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.gt_s + ) + (func $start:std/staticarray~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.le_s + ) + (func $start:std/staticarray~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/staticarray~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/staticarray/maxVal + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + global.set $std/staticarray/maxVal + ) + (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer ) (func $start:std/staticarray (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 f32) - (local $5 i32) + (local $3 i32) + (local $4 f64) + (local $5 f32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 104 i32.sub @@ -5117,17 +5182,17 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.const 1312 i32.const 12 memory.copy - local.get $5 + local.get $6 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -5142,9 +5207,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -5159,9 +5224,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -5176,9 +5241,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 20 i32.sub i32.load offset=16 @@ -5196,16 +5261,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -5221,17 +5286,17 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.const 1312 i32.const 12 memory.copy - local.get $5 + local.get $6 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -5248,25 +5313,25 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=4 - local.get $5 + local.get $6 call $std/staticarray/Ref#constructor - local.tee $6 + local.tee $7 i32.store - local.get $5 local.get $6 + local.get $7 i32.const 1 call $~lib/rt/itcms/__link - local.get $5 + local.get $6 call $std/staticarray/Ref#constructor - local.tee $6 + local.tee $7 i32.store offset=4 - local.get $5 local.get $6 + local.get $7 i32.const 1 call $~lib/rt/itcms/__link - local.get $5 + local.get $6 global.set $std/staticarray/arr4 i32.const 0 global.set $std/staticarray/arr3 @@ -5288,18 +5353,18 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5317,10 +5382,10 @@ end loop $for-loop|0 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store local.get $0 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5329,9 +5394,9 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 local.get $0 call $~lib/staticarray/StaticArray#__get if @@ -5362,24 +5427,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/staticarray/StaticArray.fromArray - local.tee $5 + local.tee $6 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 call $~lib/array/Array#get:length - local.get $6 + local.get $7 i32.ne if i32.const 0 @@ -5399,19 +5464,19 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 local.get $1 call $~lib/staticarray/StaticArray#__get - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 local.get $1 call $~lib/array/Array#__get - local.get $6 + local.get $7 i32.ne if i32.const 0 @@ -5462,35 +5527,35 @@ i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 1856 i64.load align=1 i64.store align=1 - local.get $1 + local.get $0 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.const 1888 i32.load align=1 i32.store align=1 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=24 - local.get $1 - local.get $5 + local.get $0 + local.get $6 call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> - local.tee $0 + local.tee $1 i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5507,37 +5572,37 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.const 1920 i32.const 0 memory.copy global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=24 - local.get $1 - local.get $5 + local.get $0 + local.get $6 call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> - local.tee $0 + local.tee $1 i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5569,12 +5634,12 @@ i32.const 4 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2080 i32.load align=1 i32.store align=1 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -5598,18 +5663,18 @@ i32.shr_u local.set $0 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $7 - local.get $0 - i32.add local.tee $8 + i32.add + local.tee $9 i32.const 268435455 i32.gt_u if @@ -5623,69 +5688,69 @@ local.get $0 i32.const 2 i32.shl - local.set $0 + local.set $10 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.const 2 i32.shl i32.const 8 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $9 i32.store offset=4 loop $for-loop|03 - local.get $0 - local.get $2 - i32.gt_u + local.get $3 + local.get $10 + i32.lt_u if - local.get $2 - local.get $8 + local.get $3 + local.get $9 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load - local.tee $9 + local.tee $0 i32.store - local.get $8 local.get $9 + local.get $0 i32.const 1 call $~lib/rt/itcms/__link - local.get $2 + local.get $3 i32.const 4 i32.add - local.set $2 + local.set $3 br $for-loop|03 end end - local.get $0 - local.get $8 + local.get $9 + local.get $10 i32.add local.set $1 - local.get $7 + local.get $8 i32.const 2 i32.shl - local.set $2 + local.set $3 i32.const 0 local.set $0 loop $for-loop|14 local.get $0 - local.get $2 + local.get $3 i32.lt_u if local.get $0 local.get $1 i32.add local.get $0 - local.get $6 + local.get $7 i32.add i32.load - local.tee $7 + local.tee $8 i32.store + local.get $9 local.get $8 - local.get $7 i32.const 1 call $~lib/rt/itcms/__link local.get $0 @@ -5699,12 +5764,12 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=36 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 i32.const 20 i32.sub i32.load offset=16 @@ -5724,36 +5789,36 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 2288 i32.const 20 memory.copy - local.get $2 + local.get $0 i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs - local.tee $0 + local.tee $3 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5772,10 +5837,10 @@ local.set $1 loop $for-loop|2 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store local.get $1 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5784,27 +5849,27 @@ i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=48 - local.get $2 + local.get $0 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=48 - local.get $0 + local.get $3 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=24 - local.get $5 local.get $6 + local.get $7 call $~lib/string/String.__eq i32.eqz if @@ -5823,19 +5888,19 @@ end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5852,16 +5917,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 + local.get $3 i32.const 2144 call $~lib/string/String.__eq i32.eqz @@ -5874,16 +5939,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 2176 call $~lib/string/String.__eq i32.eqz @@ -5896,29 +5961,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5936,28 +6001,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5973,20 +6038,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 100 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6001,20 +6066,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>>@varargs - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6031,16 +6096,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 2240 call $~lib/string/String.__eq i32.eqz @@ -6053,19 +6118,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -6080,10 +6145,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> @@ -6134,38 +6199,38 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2464 i32.const 20 memory.copy - local.get $1 + local.get $0 i32.store offset=52 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 9 i32.const 2512 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=24 - local.get $1 - local.get $2 + local.get $0 + local.get $3 call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6181,31 +6246,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 9 i32.const 2576 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=24 - local.get $1 - local.get $2 + local.get $0 + local.get $3 call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> - local.tee $0 + local.tee $1 i32.store offset=56 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6226,16 +6291,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2608 i32.const 20 memory.copy - local.get $1 + local.get $0 i32.store offset=60 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2144 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -6250,9 +6315,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2544 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -6265,9 +6330,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2240 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -6280,9 +6345,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2240 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -6296,40 +6361,38 @@ call $~lib/builtins/abort unreachable end + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2656 + i64.load align=1 + i64.store align=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes$276 (result i32) - i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 - i32.const 2656 - i64.load align=1 - i64.store align=1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 3 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -6342,16 +6405,16 @@ loop $while-continue|0 local.get $1 local.get $2 - i32.lt_s + i32.gt_s if local.get $0 - local.get $1 + local.get $2 i32.const 3 i32.shl i32.add f64.load - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f64.ne if global.get $~lib/memory/__stack_pointer @@ -6361,10 +6424,10 @@ i32.const 1 br $__inlined_func$~lib/staticarray/StaticArray#includes$276 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end @@ -6383,40 +6446,40 @@ call $~lib/builtins/abort unreachable end + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2688 + i32.load align=1 + i32.store align=1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes$277 (result i32) - i32.const 4 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.const 2688 - i32.load align=1 - i32.store align=1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -6429,16 +6492,16 @@ loop $while-continue|030 local.get $1 local.get $2 - i32.lt_s + i32.gt_s if local.get $0 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add f32.load - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f32.ne if global.get $~lib/memory/__stack_pointer @@ -6448,10 +6511,10 @@ i32.const 1 br $__inlined_func$~lib/staticarray/StaticArray#includes$277 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|030 end end @@ -6474,16 +6537,16 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2720 i32.const 12 memory.copy - local.get $1 + local.get $0 i32.store offset=64 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const 0 call $~lib/staticarray/StaticArray#indexOf @@ -6496,9 +6559,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 7 i32.const 0 call $~lib/staticarray/StaticArray#indexOf @@ -6513,9 +6576,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 9 i32.const 2 call $~lib/staticarray/StaticArray#indexOf @@ -6530,9 +6593,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const -1 call $~lib/staticarray/StaticArray#indexOf @@ -6547,9 +6610,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const -3 call $~lib/staticarray/StaticArray#indexOf @@ -6565,18 +6628,18 @@ i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2752 i32.const 16 memory.copy - local.get $1 + local.get $0 i32.store offset=68 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#lastIndexOf@varargs i32.const 3 @@ -6590,11 +6653,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 7 call $~lib/staticarray/StaticArray#lastIndexOf@varargs i32.const -1 @@ -6608,9 +6671,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/staticarray/StaticArray#lastIndexOf @@ -6625,9 +6688,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const 2 call $~lib/staticarray/StaticArray#lastIndexOf @@ -6640,9 +6703,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray#lastIndexOf @@ -6655,9 +6718,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.const -1 call $~lib/staticarray/StaticArray#lastIndexOf @@ -6675,23 +6738,23 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2896 i32.const 12 memory.copy - local.get $1 + local.get $0 i32.store offset=72 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 2960 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 2992 call $~lib/string/String.__eq i32.eqz @@ -6704,16 +6767,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 2928 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 3040 call $~lib/string/String.__eq i32.eqz @@ -6726,16 +6789,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 3088 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 3120 call $~lib/string/String.__eq i32.eqz @@ -6748,16 +6811,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=24 - local.get $1 + local.get $0 i32.const 3168 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 3200 call $~lib/string/String.__eq i32.eqz @@ -6770,17 +6833,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=48 - local.get $1 + local.get $0 i32.const 2960 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=48 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6794,21 +6857,21 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2960 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=24 local.get $0 + i32.store offset=24 local.get $1 + local.get $0 call $~lib/string/String.__eq i32.eqz if @@ -6823,14 +6886,14 @@ i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3264 i64.load align=1 i64.store align=1 - local.get $1 + local.get $0 i32.store offset=76 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 2 global.set $~argumentsLength @@ -6846,7 +6909,7 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6860,37 +6923,40 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - i32.const 1 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.set $2 + i32.const 1 + local.get $2 local.get $2 i32.const 1 - i32.gt_u + i32.gt_s select - local.set $0 + local.set $1 + local.get $2 + local.set $2 loop $for-loop|032 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $1 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.const 1 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|032 end end @@ -6903,9 +6969,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6917,9 +6983,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6936,14 +7002,14 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3296 i32.const 12 memory.copy - local.get $1 + local.get $0 i32.store offset=80 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6957,9 +7023,9 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -6970,22 +7036,22 @@ i32.gt_u if i32.const 0 - local.set $0 + local.set $1 local.get $2 i32.const 1 i32.shr_u - local.set $5 + local.set $3 local.get $2 i32.const 1 i32.sub local.set $2 loop $while-continue|035 - local.get $0 - local.get $5 + local.get $1 + local.get $3 i32.lt_u if - local.get $1 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -6993,9 +7059,9 @@ i32.load local.set $7 local.get $6 - local.get $1 - local.get $2 local.get $0 + local.get $2 + local.get $1 i32.sub i32.const 2 i32.shl @@ -7006,10 +7072,10 @@ local.get $6 local.get $7 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|035 end end @@ -7019,9 +7085,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7035,9 +7101,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -7051,9 +7117,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -7070,14 +7136,14 @@ i32.const 20 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3328 i32.const 20 memory.copy - local.get $1 + local.get $0 i32.store offset=84 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 2 global.set $~argumentsLength @@ -7093,7 +7159,7 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -7107,47 +7173,55 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 - local.get $1 - i32.const 3 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 + local.set $2 local.get $0 + local.get $0 + i32.const 3 + local.get $1 + local.get $1 i32.const 3 i32.gt_u select - local.tee $2 + local.tee $3 i32.const 2 i32.shl i32.add - local.get $0 + local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $0 - local.get $0 + local.get $1 + local.get $2 i32.add - local.tee $5 + local.tee $2 i32.const 0 - local.get $5 + local.get $2 i32.const 0 i32.gt_s select else - local.get $0 + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select end - local.get $2 + local.get $3 i32.sub local.tee $2 - local.get $0 - local.get $0 + local.get $1 + local.tee $1 + local.get $1 local.get $2 i32.gt_s select @@ -7163,9 +7237,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -7179,9 +7253,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -7195,9 +7269,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7211,9 +7285,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -7227,9 +7301,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 4 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -7246,15 +7320,15 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 3376 i32.const 12 memory.copy - local.get $2 + local.get $0 i32.store offset=88 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3408 @@ -7271,16 +7345,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $5 + local.tee $3 i32.const 7 i32.const 0 call $~lib/rt/__newArray @@ -7293,22 +7367,22 @@ i32.load offset=4 local.set $7 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|038 - local.get $0 - local.get $5 + local.get $1 + local.get $3 i32.lt_s if local.get $0 + local.get $1 i32.const 2 i32.shl local.tee $8 - local.get $2 i32.add i32.load local.set $9 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 3 global.set $~argumentsLength @@ -7316,16 +7390,16 @@ local.get $8 i32.add local.get $9 + local.get $1 local.get $0 - local.get $2 i32.const 3408 i32.load call_indirect (type $1) i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|038 end end @@ -7384,7 +7458,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3440 @@ -7401,42 +7475,42 @@ i32.const 0 i32.store i32.const 0 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $0 + local.set $1 loop $for-loop|040 - local.get $0 local.get $1 + local.get $2 i32.gt_s if + local.get $0 local.get $2 - local.get $1 i32.const 2 i32.shl i32.add i32.load global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 3 global.set $~argumentsLength - local.get $1 local.get $2 + local.get $0 i32.const 3440 i32.load call_indirect (type $5) - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|040 end end @@ -7456,20 +7530,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3472 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 call $~lib/staticarray/StaticArray#filter - local.tee $0 + local.tee $1 i32.store offset=96 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/array/Array#get:length i32.const 2 i32.ne @@ -7482,9 +7556,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -7498,9 +7572,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -7514,13 +7588,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3504 i32.store offset=24 i32.const 0 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7533,46 +7607,46 @@ i32.const 0 i32.store i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $5 + local.set $3 loop $for-loop|042 - local.get $0 - local.get $5 + local.get $1 + local.get $3 i32.lt_s if - local.get $2 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 4 global.set $~argumentsLength - local.get $1 + local.get $2 local.get $6 + local.get $1 local.get $0 - local.get $2 i32.const 3504 i32.load - call_indirect (type $6) - local.set $1 - local.get $0 + call_indirect (type $7) + local.set $2 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|042 end end @@ -7580,7 +7654,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 6 i32.ne if @@ -7592,13 +7666,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3536 i32.store offset=24 i32.const 0 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7611,9 +7685,9 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7621,36 +7695,36 @@ i32.shr_u i32.const 1 i32.sub - local.set $0 + local.set $1 loop $for-loop|044 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $2 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store i32.const 4 global.set $~argumentsLength + local.get $2 + local.get $3 local.get $1 - local.get $5 local.get $0 - local.get $2 i32.const 3536 i32.load - call_indirect (type $6) - local.set $1 - local.get $0 + call_indirect (type $7) + local.set $2 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $for-loop|044 end end @@ -7658,7 +7732,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 6 i32.ne if @@ -7670,12 +7744,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3568 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3568 call $~lib/staticarray/StaticArray#some i32.eqz @@ -7688,12 +7762,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3600 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3600 call $~lib/staticarray/StaticArray#some if @@ -7705,12 +7779,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3632 call $~lib/staticarray/StaticArray#every i32.eqz @@ -7723,12 +7797,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3664 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3664 call $~lib/staticarray/StaticArray#every if @@ -7740,12 +7814,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3696 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3696 call $~lib/staticarray/StaticArray#findIndex i32.const 1 @@ -7759,12 +7833,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3728 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3728 call $~lib/staticarray/StaticArray#findIndex i32.const -1 @@ -7778,12 +7852,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3760 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3760 call $~lib/staticarray/StaticArray#findLastIndex i32.const 1 @@ -7797,12 +7871,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3792 i32.store offset=24 - local.get $2 + local.get $0 i32.const 3792 call $~lib/staticarray/StaticArray#findLastIndex i32.const -1 @@ -7819,14 +7893,14 @@ i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3824 i32.const 16 memory.copy - local.get $1 + local.get $0 i32.store offset=100 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 0 global.set $~argumentsLength @@ -7848,7 +7922,7 @@ i32.const 3872 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 3872 @@ -7865,20 +7939,20 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 3872 i32.store - local.get $1 local.get $0 + local.get $1 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 8 @@ -7889,9 +7963,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -7903,9 +7977,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -7919,9 +7993,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -7935,9 +8009,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7998,68 +8072,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $4 - memory.copy - end - local.get $3 - i32.store - i32.const 16 - local.get $1 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) ) diff --git a/tests/compiler/std/string-casemapping.release.wat b/tests/compiler/std/string-casemapping.release.wat index c93b01b017..dc43d6fcf3 100644 --- a/tests/compiler/std/string-casemapping.release.wat +++ b/tests/compiler/std/string-casemapping.release.wat @@ -5,15 +5,15 @@ (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32 i32))) - (type $6 (func (param i32 i32 i64))) - (type $7 (func (result i32))) - (type $8 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $9 (func (param i32 i32 i32))) - (type $10 (func (param i64) (result i32))) + (type $6 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $7 (func (param i64) (result i32))) + (type $8 (func (param i32 i32 i32))) + (type $9 (func (param i32 i32 i64))) + (type $10 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) - (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) + (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -482,5274 +482,5275 @@ (data $178 (i32.const 21056) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\a4") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1280 - call $~lib/rt/itcms/__visit - i32.const 1088 - call $~lib/rt/itcms/__visit - i32.const 19632 - call $~lib/rt/itcms/__visit - i32.const 20688 - call $~lib/rt/itcms/__visit - i32.const 1488 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$81 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$81 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/itcms/__visit (param $0 i32) + (func $~lib/string/String#toLowerCase (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s if - return + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.eqz if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$143 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 53848 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$143 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 21056 - i32.load - i32.gt_u - if - i32.const 1280 - i32.const 1344 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 21060 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add + global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 2 i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_u if local.get $0 - local.get $2 - i32.const 2 + local.get $3 + i32.const 1 i32.shl i32.add local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz + i32.load16_u + local.tee $4 + i32.const 7 + i32.shr_u if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1424 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 53856 - i32.const 0 - i32.store - i32.const 55424 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - i32.const 53856 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 53856 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 + block $for-continue|0 + local.get $4 + i32.const 55295 + i32.sub + i32.const 1025 + i32.lt_u + local.get $3 + local.get $6 i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 53856 - i32.const 55428 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 53856 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 + i32.sub + i32.lt_u i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 53848 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne if local.get $1 - local.get $0 - i32.load offset=4 + i32.load16_u offset=2 local.tee $2 - i32.const 3 - i32.and - i32.ne + i32.const 56319 + i32.sub + i32.const 1025 + i32.lt_u if - local.get $0 + local.get $3 + i32.const 1 + i32.add + local.set $3 local.get $2 - i32.const -4 + i32.const 1023 i32.and - local.get $1 + local.get $4 + local.tee $1 + i32.const 1023 + i32.and + i32.const 10 + i32.shl i32.or - i32.store offset=4 - local.get $0 - i32.const 20 + i32.const 65536 i32.add - call $~lib/rt/__visit_members + local.tee $4 + i32.const 131072 + i32.ge_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-continue|0 + end end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 53848 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 53848 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $4 + i32.const 304 + i32.eq if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) + local.get $7 + local.get $8 i32.const 1 - else - local.get $2 - i32.load + i32.shl + i32.add + i32.const 50790505 + i32.store + local.get $8 i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1424 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$70 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1088 - i32.const 1424 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $5 - local.get $2 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1424 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1424 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.const 8 - i32.shr_u - local.tee $2 - i32.const 6084 - i32.add - i32.load8_u - local.get $2 - i32.const 2444 - i32.add - i32.load8_u - i32.const 86 - i32.mul - i32.const 2444 - i32.add - local.get $0 - i32.const 255 - i32.and - local.tee $4 - i32.const 3 - i32.div_u - i32.add - i32.load8_u - local.get $4 - i32.const 3 - i32.rem_u - i32.const 2 - i32.shl - i32.const 5112 - i32.add - i32.load - i32.mul - i32.const 11 - i32.shr_u - i32.const 6 - i32.rem_u - i32.add - i32.const 2 - i32.shl - i32.const 5124 - i32.add - i32.load - local.tee $2 - i32.const 255 - i32.and - local.set $3 - local.get $2 - i32.const 8 - i32.shr_s - local.set $2 - block $folding-inner0 - local.get $3 - i32.const 2 - i32.lt_u - br_if $folding-inner0 - local.get $2 - i32.const 255 - i32.and - local.set $3 - local.get $2 - i32.const 8 - i32.shr_u - local.set $2 - loop $while-continue|0 - local.get $3 - if - local.get $2 - local.get $3 - i32.const 1 - i32.shr_u - local.tee $7 - i32.add - i32.const 1 - i32.shl - i32.const 6596 - i32.add - local.tee $5 - i32.load8_u - local.tee $6 - local.get $4 - i32.eq - if (result i32) - local.get $5 - i32.load8_u offset=1 - i32.const 2 - i32.shl - i32.const 5124 - i32.add - i32.load - local.tee $2 - i32.const 255 - i32.and - local.set $3 - local.get $2 - i32.const 8 - i32.shr_s - local.set $2 - local.get $3 - i32.const 2 - i32.lt_u - br_if $folding-inner0 - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.const 1 - i32.shl - i32.sub - return - else - local.get $4 - local.get $6 - i32.lt_u - if (result i32) - local.get $7 - else - local.get $2 - local.get $7 - i32.add - local.set $2 - local.get $3 - local.get $7 - i32.sub - end - end - local.set $3 - br $while-continue|0 - end - end - local.get $0 - return - end - local.get $0 - local.get $2 - i32.const 0 - local.get $1 - local.get $3 - i32.xor - i32.sub - i32.and - i32.add - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $3 - local.get $1 - i32.store offset=16 - local.get $0 - return - end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 - local.get $0 - local.get $1 - i32.gt_u - select - memory.copy - local.get $2 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - call $start:std/string-casemapping - ) - (func $~lib/string/String#toUpperCase (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $8 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.const 6 - i32.mul - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1488 - i32.store - i32.const 1484 - i32.load - i32.const 1 - i32.shr_u - local.set $3 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_u - if - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_u - local.tee $2 - i32.const 7 - i32.shr_u - if - block $for-continue|0 - local.get $2 - i32.const 55295 - i32.sub - i32.const 1025 - i32.lt_u - local.get $7 - local.get $8 - i32.const 1 - i32.sub - i32.lt_u - i32.and - if - local.get $1 - i32.load16_u offset=2 - local.tee $4 - i32.const 56319 - i32.sub - i32.const 1025 - i32.lt_u - if - local.get $7 - i32.const 1 - i32.add - local.set $7 - local.get $4 - i32.const 1023 - i32.and - local.get $2 - local.tee $1 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.or - i32.const 65536 - i32.add - local.tee $2 - i32.const 131072 - i32.ge_u - if - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-continue|0 - end - end - end - local.get $2 - i32.const 9424 - i32.sub - i32.const 25 - i32.le_u - if - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 26 - i32.sub - i32.store16 - else - local.get $2 - i32.const 223 - i32.sub - i32.const 64056 - i32.le_u - if (result i32) - local.get $3 - local.set $1 - i32.const 0 - local.set $9 - block $~lib/util/casemap/bsearch|inlined.0 - loop $while-continue|1 - local.get $1 - local.get $9 - i32.ge_s - if - local.get $1 - local.get $9 - i32.add - i32.const 3 - i32.shr_u - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - i32.shl - i32.const 1488 - i32.add - i32.load16_u - local.get $2 - i32.sub - local.tee $10 - i32.eqz - br_if $~lib/util/casemap/bsearch|inlined.0 - local.get $10 - i32.const 31 - i32.shr_u - if - local.get $4 - i32.const 4 - i32.add - local.set $9 - else - local.get $4 - i32.const 4 - i32.sub - local.set $1 - end - br $while-continue|1 - end - end - i32.const -1 - local.set $4 - end - local.get $4 - else - i32.const -1 - end - local.tee $1 - i32.const -1 - i32.xor - if - local.get $1 - i32.const 1 - i32.shl - i32.const 1488 - i32.add - local.tee $1 - i32.load16_u offset=6 - local.set $2 - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.tee $4 - local.get $1 - i32.load offset=2 - i32.store - local.get $4 - local.get $2 - i32.store16 offset=4 - local.get $5 - local.get $2 - i32.const 0 - i32.ne - i32.const 1 - i32.add - i32.add - local.set $5 - else - local.get $2 - i32.const 1 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.tee $1 - i32.const 65536 - i32.lt_u - if - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.store16 - else - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 65536 - i32.sub - local.tee $1 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $1 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - end - end - end - else - local.get $6 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 2316 - i32.add - i32.load8_u - i32.store16 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $6 - local.get $5 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$81 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$81 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String#toLowerCase (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 2 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_u - if - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_u - local.tee $4 - i32.const 7 - i32.shr_u - if - block $for-continue|0 - local.get $4 - i32.const 55295 - i32.sub - i32.const 1025 - i32.lt_u - local.get $3 - local.get $6 - i32.const 1 - i32.sub - i32.lt_u - i32.and - if - local.get $1 - i32.load16_u offset=2 - local.tee $2 - i32.const 56319 - i32.sub - i32.const 1025 - i32.lt_u - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $2 - i32.const 1023 - i32.and - local.get $4 - local.tee $1 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.or - i32.const 65536 - i32.add - local.tee $4 - i32.const 131072 - i32.ge_u - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $2 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-continue|0 - end - end - end - local.get $4 - i32.const 304 - i32.eq - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.const 50790505 - i32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - else - local.get $4 - i32.const 931 - i32.eq - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.const 962 - i32.const 963 - local.get $6 - i32.const 1 - i32.gt_u - if (result i32) - block $~lib/util/string/isFinalSigma|inlined.0 (result i32) - i32.const 0 - local.set $1 - local.get $3 - local.tee $2 - i32.const 30 - i32.sub - local.tee $4 - i32.const 0 - local.get $4 - i32.const 0 - i32.ge_s - select - local.set $5 - loop $while-continue|1 - local.get $2 - local.get $5 - i32.gt_s - if - i32.const -1 - local.set $4 - block $~lib/util/string/codePointBefore|inlined.0 - local.get $2 - i32.const 0 - i32.le_s - br_if $~lib/util/string/codePointBefore|inlined.0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $9 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - local.get $2 - i32.const 2 - i32.sub - local.tee $4 - i32.const 0 - i32.ge_s - i32.and - if - local.get $9 - i32.const 1023 - i32.and - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $10 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - i32.const 65536 - i32.add - local.set $4 - local.get $10 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - br_if $~lib/util/string/codePointBefore|inlined.0 - end - i32.const 65533 - local.get $9 - local.get $9 - i32.const 63488 - i32.and - i32.const 55296 - i32.eq - select - local.set $4 - end - local.get $4 - i32.const 918000 - i32.lt_u - if (result i32) - local.get $4 - i32.const 8 - i32.shr_u - i32.const 7212 - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.const 7212 - i32.add - local.get $4 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $4 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - local.get $4 - i32.const 127370 - i32.lt_u - if (result i32) - local.get $4 - i32.const 8 - i32.shr_u - i32.const 10220 - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.const 10220 - i32.add - local.get $4 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $4 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $~lib/util/string/isFinalSigma|inlined.0 - drop - i32.const 1 - local.set $1 - end - local.get $2 - local.get $4 - i32.const 65536 - i32.ge_s - i32.const 1 - i32.add - i32.sub - local.set $2 - br $while-continue|1 - end - end - i32.const 0 - local.get $1 - i32.eqz - br_if $~lib/util/string/isFinalSigma|inlined.0 - drop - local.get $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 30 - i32.add - local.tee $1 - local.get $6 - local.get $1 - local.get $6 - i32.lt_s - select - local.set $4 - loop $while-continue|2 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - local.tee $1 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - local.get $2 - i32.const 1 - i32.add - local.get $6 - i32.ne - i32.and - if - local.get $5 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $1 - i32.const 10 - i32.shl - local.get $5 - i32.add - i32.const 56613888 - i32.sub - local.set $1 - end - end - local.get $1 - i32.const 918000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 8 - i32.shr_u - i32.const 7212 - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.const 7212 - i32.add - local.get $1 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $1 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - else - i32.const 0 - end - i32.eqz - if - local.get $1 - i32.const 127370 - i32.lt_u - if (result i32) - local.get $1 - i32.const 8 - i32.shr_u - i32.const 10220 - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.const 10220 - i32.add - local.get $1 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $1 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - else - i32.const 0 - end - i32.eqz - br $~lib/util/string/isFinalSigma|inlined.0 - end - local.get $2 - local.get $1 - i32.const 65536 - i32.ge_u - i32.const 1 - i32.add - i32.add - local.set $2 - br $while-continue|2 - end - end - i32.const 1 - end - else - i32.const 0 - end - select - i32.store16 - else - local.get $4 - i32.const 9398 - i32.sub - i32.const 25 - i32.le_u - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 26 - i32.add - i32.store16 - else - local.get $4 - i32.const 0 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.tee $1 - i32.const 65536 - i32.lt_u - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.store16 - else - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 65536 - i32.sub - local.tee $1 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $1 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - end - end - end - end - end - else - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 7084 - i32.add - i32.load8_u - i32.store16 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.le_u - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return - end - block $folding-inner0 - local.get $1 - i32.const 1 - i32.add - local.get $2 - i32.eq - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.tee $1 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - i32.or - br_if $folding-inner0 - local.get $0 - i32.load16_u offset=2 - local.tee $0 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.const 10 - i32.shl - local.get $0 - i32.add - i32.const 56613888 - i32.sub - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$148 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1056 - local.set $0 - br $__inlined_func$~lib/string/String#concat$148 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $start:std/string-casemapping - (local $0 i64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s - if - i32.const 53872 - i32.const 53920 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - memory.size - i32.const 16 - i32.shl - i32.const 53848 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - i32.const 1056 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11808 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 11856 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11904 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 11952 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12000 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 12 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12096 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12192 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 13 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12288 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12352 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12480 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12576 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 16 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12576 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12768 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12864 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 12864 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 12960 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 19 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13056 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 20 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13216 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13376 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13504 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 23 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13664 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13824 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 13888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 25 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 13952 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14112 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14192 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 27 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14272 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14272 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14592 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14752 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14784 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14816 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 14848 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 37 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14880 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 14752 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 42 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15328 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15360 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 43 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15392 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65536 - call $~lib/string/String.fromCodePoint - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 65536 - call $~lib/string/String.fromCodePoint - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15680 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15712 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 54 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15744 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 55 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15808 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15840 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 56 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15872 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 15936 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 15968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 60 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16000 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 61 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16064 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16096 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 62 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16128 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 63 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16192 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 64 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16256 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16288 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 65 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.set $8 + else + local.get $4 + i32.const 931 + i32.eq + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + i32.const 962 + i32.const 963 + local.get $6 + i32.const 1 + i32.gt_u + if (result i32) + i32.const 0 + local.set $1 + local.get $3 + local.tee $2 + i32.const 30 + i32.sub + local.tee $4 + i32.const 0 + local.get $4 + i32.const 0 + i32.ge_s + select + local.set $5 + block $~lib/util/string/isFinalSigma|inlined.0 (result i32) + loop $while-continue|1 + local.get $2 + local.get $5 + i32.gt_s + if + i32.const -1 + local.set $4 + block $~lib/util/string/codePointBefore|inlined.0 + local.get $2 + i32.const 0 + i32.le_s + br_if $~lib/util/string/codePointBefore|inlined.0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $9 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + local.get $2 + i32.const 2 + i32.sub + local.tee $4 + i32.const 0 + i32.ge_s + i32.and + if + local.get $9 + i32.const 1023 + i32.and + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $10 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + i32.const 65536 + i32.add + local.set $4 + local.get $10 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + br_if $~lib/util/string/codePointBefore|inlined.0 + end + i32.const 65533 + local.get $9 + local.get $9 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + select + local.set $4 + end + local.get $4 + i32.const 918000 + i32.lt_u + if (result i32) + local.get $4 + i32.const 8 + i32.shr_u + i32.const 7212 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 7212 + i32.add + local.get $4 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $4 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + local.get $4 + i32.const 127370 + i32.lt_u + if (result i32) + local.get $4 + i32.const 8 + i32.shr_u + i32.const 10220 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 10220 + i32.add + local.get $4 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $4 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + br_if $~lib/util/string/isFinalSigma|inlined.0 + drop + i32.const 1 + local.set $1 + end + local.get $2 + local.get $4 + i32.const 65536 + i32.ge_s + i32.const 1 + i32.add + i32.sub + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + local.get $1 + i32.eqz + br_if $~lib/util/string/isFinalSigma|inlined.0 + drop + local.get $3 + i32.const 1 + i32.add + local.tee $2 + i32.const 30 + i32.add + local.tee $1 + local.get $6 + local.get $1 + local.get $6 + i32.lt_s + select + local.set $4 + loop $while-continue|2 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.tee $1 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + local.get $2 + i32.const 1 + i32.add + local.get $6 + i32.ne + i32.and + if + local.get $5 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $1 + i32.const 10 + i32.shl + local.get $5 + i32.add + i32.const 56613888 + i32.sub + local.set $1 + end + end + local.get $1 + i32.const 918000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 8 + i32.shr_u + i32.const 7212 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 7212 + i32.add + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $1 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + if + local.get $1 + i32.const 127370 + i32.lt_u + if (result i32) + local.get $1 + i32.const 8 + i32.shr_u + i32.const 10220 + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.const 10220 + i32.add + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $1 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + else + i32.const 0 + end + i32.eqz + br $~lib/util/string/isFinalSigma|inlined.0 + end + local.get $2 + local.get $1 + i32.const 65536 + i32.ge_u + i32.const 1 + i32.add + i32.add + local.set $2 + br $while-continue|2 + end + end + i32.const 1 + end + else + i32.const 0 + end + select + i32.store16 + else + local.get $4 + i32.const 9398 + i32.sub + i32.const 25 + i32.le_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 26 + i32.add + i32.store16 + else + local.get $4 + i32.const 0 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.tee $1 + i32.const 65536 + i32.lt_u + if + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.store16 + else + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 65536 + i32.sub + local.tee $1 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $1 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + end + end + end + end + end + else + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 7084 + i32.add + i32.load8_u + i32.store16 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end end - i32.const 16320 - call $~lib/string/String#toLowerCase - local.set $5 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 66 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16384 - call $~lib/string/String#toLowerCase - local.set $5 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#toUpperCase (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 67 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16448 - call $~lib/string/String#toLowerCase - local.set $5 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16480 - call $~lib/string/String.__eq - i32.eqz + i32.const 21080 + i32.lt_s if - i32.const 0 - i32.const 7024 - i32.const 68 + i32.const 53872 + i32.const 53920 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16512 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $5 - i32.const 16544 - call $~lib/string/String.__eq + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 i32.eqz if - i32.const 0 - i32.const 7024 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 16576 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 + i32.const 6 + i32.mul + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1488 i32.store - local.get $5 - i32.const 16608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1484 + i32.load + i32.const 1 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_u + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u + local.tee $2 + i32.const 7 + i32.shr_u + if + block $for-continue|0 + local.get $2 + i32.const 55295 + i32.sub + i32.const 1025 + i32.lt_u + local.get $7 + local.get $8 + i32.const 1 + i32.sub + i32.lt_u + i32.and + if + local.get $1 + i32.load16_u offset=2 + local.tee $4 + i32.const 56319 + i32.sub + i32.const 1025 + i32.lt_u + if + local.get $7 + i32.const 1 + i32.add + local.set $7 + local.get $4 + i32.const 1023 + i32.and + local.get $2 + local.tee $1 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.or + i32.const 65536 + i32.add + local.tee $2 + i32.const 131072 + i32.ge_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-continue|0 + end + end + end + local.get $2 + i32.const 9424 + i32.sub + i32.const 25 + i32.le_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 26 + i32.sub + i32.store16 + else + local.get $2 + i32.const 223 + i32.sub + i32.const 64056 + i32.le_u + if (result i32) + local.get $3 + local.set $1 + i32.const 0 + local.set $9 + block $~lib/util/casemap/bsearch|inlined.0 + loop $while-continue|1 + local.get $1 + local.get $9 + i32.ge_s + if + local.get $1 + local.get $9 + i32.add + i32.const 3 + i32.shr_u + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + i32.shl + i32.const 1488 + i32.add + i32.load16_u + local.get $2 + i32.sub + local.tee $10 + i32.eqz + br_if $~lib/util/casemap/bsearch|inlined.0 + local.get $10 + i32.const 31 + i32.shr_u + if + local.get $4 + i32.const 4 + i32.add + local.set $9 + else + local.get $4 + i32.const 4 + i32.sub + local.set $1 + end + br $while-continue|1 + end + end + i32.const -1 + local.set $4 + end + local.get $4 + else + i32.const -1 + end + local.tee $1 + i32.const -1 + i32.xor + if + local.get $1 + i32.const 1 + i32.shl + i32.const 1488 + i32.add + local.tee $1 + i32.load16_u offset=6 + local.set $2 + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.tee $4 + local.get $1 + i32.load offset=2 + i32.store + local.get $4 + local.get $2 + i32.store16 offset=4 + local.get $5 + local.get $2 + i32.const 0 + i32.ne + i32.const 1 + i32.add + i32.add + local.set $5 + else + local.get $2 + i32.const 1 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.tee $1 + i32.const 65536 + i32.lt_u + if + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.store16 + else + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 65536 + i32.sub + local.tee $1 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $1 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + end + end + end + else + local.get $6 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 2316 + i32.add + i32.load8_u + i32.store16 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end - i32.const 16640 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $6 local.get $5 - i32.const 16672 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 16704 - call $~lib/string/String#toLowerCase - local.set $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16736 - call $~lib/string/String.__eq + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 7024 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - i32.const 16768 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16800 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - i32.const 0 - i32.const 7024 - i32.const 74 + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$143 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 53848 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$143 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 21056 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 21060 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 16832 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16864 - call $~lib/string/String.__eq - i32.eqz + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 75 - i32.const 1 + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - i32.const 16896 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16928 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - i32.const 16960 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 16992 - call $~lib/string/String.__eq + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 7024 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - i32.const 17024 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17056 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 7024 - i32.const 80 - i32.const 1 + i32.const 1088 + i32.const 1424 + i32.const 461 + i32.const 29 call $~lib/builtins/abort unreachable end - i32.const 17088 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17120 - call $~lib/string/String.__eq + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow i32.const 0 - i32.const 7024 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - i32.const 17152 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store local.get $5 - i32.const 17184 - call $~lib/string/String.__eq - i32.eqz + local.get $2 + i32.load + i32.const -4 + i32.and + i32.gt_u if i32.const 0 - i32.const 7024 - i32.const 82 - i32.const 1 + i32.const 1424 + i32.const 501 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 17216 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $4 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 local.get $5 - i32.const 17248 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.add + i32.const 15 + i32.and if i32.const 0 - i32.const 7024 - i32.const 83 - i32.const 1 + i32.const 1424 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 17280 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $6 + i32.const -4 + i32.and local.get $5 - i32.const 16352 - call $~lib/string/String.__eq - i32.eqz + i32.sub + local.tee $3 + i32.const 16 + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 84 + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const -3 + i32.and + i32.store end - i32.const 17312 - call $~lib/string/String#toLowerCase - local.set $5 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17344 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s if - i32.const 0 - i32.const 7024 - i32.const 85 + i32.const 53872 + i32.const 53920 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17376 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 0 i32.store - local.get $5 - i32.const 17408 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $1 + i32.le_u if - i32.const 0 - i32.const 7024 - i32.const 86 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + block $folding-inner0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.get $2 + i32.eq + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.tee $1 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + i32.or + br_if $folding-inner0 + local.get $0 + i32.load16_u offset=2 + local.tee $0 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 10 + i32.shl + local.get $0 + i32.add + i32.const 56613888 + i32.sub + return end - i32.const 17440 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17472 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/itoa64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s if - i32.const 0 - i32.const 7024 - i32.const 87 + i32.const 53872 + i32.const 53920 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17504 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 0 i32.store - local.get $5 - i32.const 17536 - call $~lib/string/String.__eq - i32.eqz + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 19200 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.tee $2 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $4 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $2 + local.get $3 + i32.add + local.set $5 + loop $while-continue|0 + local.get $0 + i64.const 100000000 + i64.ge_u + if + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i64.const 100000000 + i64.div_u + local.tee $0 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $4 + i32.const 10000 + i32.rem_u + local.tee $6 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $6 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $5 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 10000 + i32.div_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $5 + local.get $0 + i32.wrap_i64 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + end + local.get $2 if - i32.const 0 - i32.const 7024 - i32.const 88 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 45 + i32.store16 end - i32.const 17568 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17600 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 89 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$148 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $0 + br $__inlined_func$~lib/string/String#concat$148 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - i32.const 17632 - call $~lib/string/String#toLowerCase - local.set $5 + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17664 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s if - i32.const 0 - i32.const 7024 - i32.const 90 + i32.const 53872 + i32.const 53920 + i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17696 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 0 i32.store - local.get $5 - i32.const 17728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 91 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 17760 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 2 + local.get $0 + i32.const 65535 + i32.gt_u + local.tee $2 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - local.get $5 - i32.const 17792 - call $~lib/string/String.__eq - i32.eqz + local.get $2 if - i32.const 0 - i32.const 7024 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 1114111 + i32.gt_u + if + i32.const 0 + i32.const 15600 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 65536 + i32.sub + local.tee $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + else + local.get $1 + local.get $0 + i32.store16 end - i32.const 17824 - call $~lib/string/String#toLowerCase - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17856 - call $~lib/string/String.__eq + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 93 - i32.const 1 + i32.const 1424 + i32.const 268 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 17888 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17920 - call $~lib/string/String.__eq - i32.eqz + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u if i32.const 0 - i32.const 7024 - i32.const 94 - i32.const 1 + i32.const 1424 + i32.const 270 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 17952 - call $~lib/string/String#toLowerCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 17984 - call $~lib/string/String.__eq + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 95 - i32.const 1 + i32.const 1424 + i32.const 284 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18016 - call $~lib/string/String#toLowerCase + local.get $1 + i32.load offset=8 local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end local.get $5 - i32.const 18048 - call $~lib/string/String.__eq + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 i32.eqz if i32.const 0 - i32.const 7024 - i32.const 96 - i32.const 1 + i32.const 1424 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18080 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18112 - call $~lib/string/String.__eq + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 99 - i32.const 1 + i32.const 1424 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 15328 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or i32.store - local.get $5 - i32.const 18144 - call $~lib/string/String.__eq - i32.eqz + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 - i32.const 7024 - i32.const 100 - i32.const 1 + i32.const 1424 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18176 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18208 - call $~lib/string/String.__eq - i32.eqz + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne if i32.const 0 - i32.const 7024 - i32.const 101 - i32.const 1 + i32.const 1424 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18240 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u local.get $5 - i32.const 18272 - call $~lib/string/String.__eq + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 102 - i32.const 1 + i32.const 1424 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18304 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store + local.get $0 local.get $5 - i32.const 18336 - call $~lib/string/String.__eq - i32.eqz + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 0 - i32.const 7024 - i32.const 103 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - i32.const 18368 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 local.get $5 + i32.shl + i32.or i32.store + local.get $0 local.get $5 - i32.const 18400 - call $~lib/string/String.__eq - i32.eqz + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 104 + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end - i32.const 18432 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18400 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + i32.const 10 + i32.ge_u if - i32.const 0 - i32.const 7024 - i32.const 105 + local.get $0 + local.get $2 + i32.const 2 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 19212 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 8 + i32.shr_u + local.tee $2 + i32.const 6084 + i32.add + i32.load8_u + local.get $2 + i32.const 2444 + i32.add + i32.load8_u + i32.const 86 + i32.mul + i32.const 2444 + i32.add + local.get $0 + i32.const 255 + i32.and + local.tee $4 + i32.const 3 + i32.div_u + i32.add + i32.load8_u + local.get $4 + i32.const 3 + i32.rem_u + i32.const 2 + i32.shl + i32.const 5112 + i32.add + i32.load + i32.mul + i32.const 11 + i32.shr_u + i32.const 6 + i32.rem_u + i32.add + i32.const 2 + i32.shl + i32.const 5124 + i32.add + i32.load + local.tee $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_s + local.set $2 + block $folding-inner0 + local.get $3 + i32.const 2 + i32.lt_u + br_if $folding-inner0 + local.get $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_u + local.set $2 + loop $while-continue|0 + local.get $3 + if + local.get $2 + local.get $3 + i32.const 1 + i32.shr_u + local.tee $7 + i32.add + i32.const 1 + i32.shl + i32.const 6596 + i32.add + local.tee $5 + i32.load8_u + local.tee $6 + local.get $4 + i32.eq + if (result i32) + local.get $5 + i32.load8_u offset=1 + i32.const 2 + i32.shl + i32.const 5124 + i32.add + i32.load + local.tee $2 + i32.const 255 + i32.and + local.set $3 + local.get $2 + i32.const 8 + i32.shr_s + local.set $2 + local.get $3 + i32.const 2 + i32.lt_u + br_if $folding-inner0 + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.const 1 + i32.shl + i32.sub + return + else + local.get $4 + local.get $6 + i32.lt_u + if (result i32) + local.get $7 + else + local.get $2 + local.get $7 + i32.add + local.set $2 + local.get $3 + local.get $7 + i32.sub + end + end + local.set $3 + br $while-continue|0 + end + end + local.get $0 + return + end + local.get $0 + local.get $2 + i32.const 0 + local.get $1 + local.get $3 + i32.xor + i32.sub + i32.and + i32.add + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 end - i32.const 18464 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18496 - call $~lib/string/String.__eq + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and i32.eqz if i32.const 0 - i32.const 7024 - i32.const 106 - i32.const 1 + i32.const 1424 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 18528 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 107 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end - i32.const 18592 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18624 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 7024 - i32.const 108 + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 18656 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18688 - call $~lib/string/String.__eq - i32.eqz - if + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else i32.const 0 - i32.const 7024 - i32.const 109 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 18720 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 18752 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 7024 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort unreachable end - i32.const 18784 - call $~lib/string/String#toUpperCase - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 53856 + i32.const 0 i32.store - local.get $5 - i32.const 18816 - call $~lib/string/String.__eq - i32.eqz + i32.const 55424 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 53856 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 53856 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 53856 + i32.const 55428 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 53856 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if i32.const 0 - i32.const 7024 - i32.const 111 - i32.const 1 + i32.const 1424 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $4 - i32.const 1114111 - i32.le_s + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u if - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/string/String.fromCodePoint - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - call $~lib/string/String#toLowerCase - local.tee $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 local.get $5 - call $~lib/string/String#toUpperCase - local.tee $5 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.const 1 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $1 - i64.const 0 - i64.ge_s + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 19632 + call $~lib/rt/itcms/__visit + i32.const 20688 + call $~lib/rt/itcms/__visit + i32.const 1488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - local.get $0 - local.get $1 - i64.const 16 - i64.shl - i64.add - local.set $0 + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - i32.const 2 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $1 - i64.const 0 - i64.ge_s - if (result i64) - local.get $0 - local.get $1 - i64.const 32 - i64.shl - i64.add - else - local.get $0 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~start + call $start:std/string-casemapping + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end + global.get $~lib/rt/itcms/white + i32.eqz local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 0 - call $~lib/string/String#codePointAt - i64.extend_i32_s + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 1 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $2 - i64.const 0 - i64.ge_s - if - local.get $0 - local.get $2 - i64.const 16 - i64.shl - i64.add - local.set $0 - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 2 - call $~lib/string/String#codePointAt - i64.extend_i32_s - local.tee $2 - i64.const 0 - i64.ge_s - if (result i64) - local.get $0 - local.get $2 - i64.const 32 - i64.shl - i64.add - else + loop $while-continue|1 local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.set $2 - local.get $4 i32.const 0 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.set $0 - local.get $4 - i32.const 1 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.tee $3 - i64.const 0 - i64.ge_s + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq if - local.get $0 - local.get $3 - i64.const 16 - i64.shl - i64.add + global.get $~lib/memory/__stack_pointer local.set $0 - end - local.get $4 - i32.const 2 - call $std/string-casemapping/toLowerCaseFromIndex - i64.extend_i32_s - local.tee $3 - i64.const 0 - i64.ge_s - if (result i64) - local.get $0 - local.get $3 - i64.const 32 - i64.shl - i64.add - else - local.get $0 - end - local.set $3 - local.get $4 - i32.const 0 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.set $0 - local.get $4 - i32.const 1 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.tee $7 - i64.const 0 - i64.ge_s - if - local.get $0 - local.get $7 - i64.const 16 - i64.shl - i64.add + loop $while-continue|0 + local.get $0 + i32.const 53848 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - end - local.get $4 - i32.const 2 - call $std/string-casemapping/toUpperCaseFromIndex - i64.extend_i32_s - local.tee $7 - i64.const 0 - i64.ge_s - if - local.get $0 - local.get $7 - i64.const 32 - i64.shl - i64.add + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz local.get $1 - local.get $3 - i64.ne + i32.const 3 + i32.and + i32.ne if - i32.const 18848 - i32.const 1 - local.get $4 - f64.convert_i32_s - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $1 - call $~lib/util/number/itoa64 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 18944 - local.get $5 - call $~lib/string/String.__concat - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $3 - call $~lib/util/number/itoa64 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 20784 - local.get $5 - call $~lib/string/String.__concat - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable end local.get $0 - local.get $2 - i64.ne + i32.const 53848 + i32.lt_u if - i32.const 20848 - i32.const 1 - local.get $4 - f64.convert_i32_s - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $2 - call $~lib/util/number/itoa64 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - i32.const 20944 - local.get $5 - call $~lib/string/String.__concat - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace local.get $0 - call $~lib/util/number/itoa64 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 + i32.const 0 i32.store offset=4 - i32.const 21008 - local.get $5 - call $~lib/string/String.__concat - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 + local.get $0 i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 53848 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $start:std/string-casemapping + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 21080 + i32.lt_s + if + i32.const 53872 + i32.const 53920 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 53848 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + i32.const 1056 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1056 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11808 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 11856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 11904 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 11952 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12000 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12096 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12288 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12352 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12480 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12576 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12576 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12768 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12864 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 12960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13056 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 20 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13216 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13376 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13440 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13504 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13664 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13824 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 13888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13952 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14112 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14192 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14272 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14432 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14272 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14752 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14784 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14816 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 14848 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 37 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14880 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14752 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15328 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15392 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65536 + call $~lib/string/String.fromCodePoint + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 50 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65536 + call $~lib/string/String.fromCodePoint + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 51 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15680 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15744 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15776 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 55 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15808 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 56 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15872 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 59 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15936 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 15968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16000 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16032 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 61 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16064 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16096 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16128 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16160 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 63 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16192 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 64 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16256 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 65 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16320 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 66 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16384 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16416 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 67 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16448 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16480 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 68 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16512 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16576 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16640 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16672 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16704 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16736 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16768 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16800 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16832 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16864 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 75 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16896 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16928 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 16960 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16992 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17024 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17088 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17120 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 81 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17152 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 82 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17216 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 83 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17280 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 16352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 84 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17312 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 85 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17376 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17408 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 86 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17440 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17504 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 88 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17568 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17600 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17632 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 90 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17696 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17728 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 91 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17760 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17824 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17888 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 17952 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 17984 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18016 + call $~lib/string/String#toLowerCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18080 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18112 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 99 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 15328 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 100 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 18176 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + local.get $5 + i32.store + local.get $5 + i32.const 18208 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18240 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 102 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18304 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s + local.get $5 + i32.store + local.get $5 + i32.const 18336 + call $~lib/string/String.__eq + i32.eqz if - i32.const 53872 - i32.const 53920 + i32.const 0 + i32.const 7024 + i32.const 103 i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18368 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 18432 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $5 i32.store + local.get $5 + i32.const 18400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 105 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18464 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $0 - i32.const 65535 - i32.gt_u - local.tee $2 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $5 i32.store - local.get $2 + local.get $5 + i32.const 18496 + call $~lib/string/String.__eq + i32.eqz if - local.get $0 - i32.const 1114111 - i32.gt_u - if - i32.const 0 - i32.const 15600 - i32.const 39 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 65536 - i32.sub - local.tee $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - else - local.get $1 - local.get $0 - i32.store16 + i32.const 0 + i32.const 7024 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 18528 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/itoa64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $5 + i32.store + local.get $5 + i32.const 18560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18592 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18624 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 108 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18656 + call $~lib/string/String#toUpperCase + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 21080 - i32.lt_s + local.get $5 + i32.store + local.get $5 + i32.const 18688 + call $~lib/string/String.__eq + i32.eqz if - i32.const 53872 - i32.const 53920 + i32.const 0 + i32.const 7024 + i32.const 109 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18720 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18752 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 110 i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 18784 + call $~lib/string/String#toUpperCase + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 18816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 7024 + i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 19200 - return - end - i64.const 0 - local.get $0 - i64.sub - local.get $0 - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - i32.const 1 - i32.shl - local.tee $2 - select - local.tee $0 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add + loop $for-loop|0 + local.get $4 + i32.const 1114111 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/string/String.fromCodePoint + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/string/String#toLowerCase + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + call $~lib/string/String#toUpperCase + local.tee $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 0 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 1 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $1 + i64.const 0 + i64.ge_s + if + local.get $0 local.get $1 - i32.const 1000 - i32.ge_u - i32.add + i64.const 16 + i64.shl + i64.add + local.set $0 end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 2 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $1 + i64.const 0 + i64.ge_s + if (result i64) + local.get $0 local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + i64.const 32 + i64.shl + i64.add else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add + local.get $0 end - end - local.tee $4 - i32.const 1 - i32.shl - local.get $2 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $2 - local.get $3 - i32.add - local.get $1 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 1000000000000 - i64.lt_u - if (result i32) + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $2 + i64.const 0 + i64.ge_s + if local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add + local.get $2 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 2 + call $~lib/string/String#codePointAt + i64.extend_i32_s + local.tee $2 + i64.const 0 + i64.ge_s + if (result i64) local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add + local.get $2 + i64.const 32 + i64.shl + i64.add else local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add end - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if (result i32) + local.set $2 + local.get $4 + i32.const 0 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.set $0 + local.get $4 + i32.const 1 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.tee $3 + i64.const 0 + i64.ge_s + if local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else + local.get $3 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + local.get $4 + i32.const 2 + call $std/string-casemapping/toLowerCaseFromIndex + i64.extend_i32_s + local.tee $3 + i64.const 0 + i64.ge_s + if (result i64) local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add + local.get $3 + i64.const 32 + i64.shl + i64.add + else local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $2 - local.get $3 - i32.add - local.set $5 - loop $while-continue|0 - local.get $0 - i64.const 100000000 - i64.ge_u + local.set $3 + local.get $4 + i32.const 0 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.set $0 + local.get $4 + i32.const 1 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.tee $7 + i64.const 0 + i64.ge_s if - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add local.get $0 + local.get $7 + i64.const 16 + i64.shl + i64.add + local.set $0 + end + local.get $4 + i32.const 2 + call $std/string-casemapping/toUpperCaseFromIndex + i64.extend_i32_s + local.tee $7 + i64.const 0 + i64.ge_s + if local.get $0 - i64.const 100000000 - i64.div_u - local.tee $0 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.tee $4 - i32.const 10000 - i32.rem_u - local.tee $6 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u - local.get $6 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u + local.get $7 i64.const 32 i64.shl - i64.or - i64.store - local.get $5 - local.get $1 - i32.const 4 - i32.sub - local.tee $1 + i64.add + local.set $0 + end + local.get $1 + local.get $3 + i64.ne + if + i32.const 18848 i32.const 1 - i32.shl - i32.add local.get $4 - i32.const 10000 - i32.div_u - local.tee $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u + f64.convert_i32_s + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $1 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 18944 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $3 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 20784 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + end + local.get $0 + local.get $2 + i64.ne + if + i32.const 20848 + i32.const 1 local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 19212 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + f64.convert_i32_s + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $2 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 20944 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + local.get $0 + call $~lib/util/number/itoa64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 21008 + local.get $5 + call $~lib/string/String.__concat + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 end - local.get $5 - local.get $0 - i32.wrap_i64 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) ) diff --git a/tests/compiler/std/string-encoding.release.wat b/tests/compiler/std/string-encoding.release.wat index 1dd0f55a65..fb72c04a38 100644 --- a/tests/compiler/std/string-encoding.release.wat +++ b/tests/compiler/std/string-encoding.release.wat @@ -2,12 +2,12 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func)) (type $2 (func (param i32))) - (type $3 (func (param i32 i32))) + (type $3 (func (param i32 i32 i32) (result i32))) (type $4 (func (param i32) (result i32))) - (type $5 (func (param i32 i32 i32) (result i32))) + (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -71,1227 +71,1069 @@ (data $26 (i32.const 22784) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1344 - call $~lib/rt/itcms/__visit - i32.const 1152 - call $~lib/rt/itcms/__visit - i32.const 1712 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1216 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s if - return + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$158 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 55572 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$158 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 22784 - i32.load - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 22788 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 + global.get $~lib/memory/__stack_pointer local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 + i32.store local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) local.get $3 + local.tee $0 i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 local.get $2 - i32.rotl - i32.and - i32.store + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$94 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$94 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - i32.eqz + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 201 - i32.const 14 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 local.tee $3 - i32.const 1 - i32.and - i32.eqz + local.get $1 + i32.add + local.set $5 + local.get $3 + local.get $5 + i32.gt_u if i32.const 0 - i32.const 1488 - i32.const 203 - i32.const 14 + i32.const 1776 + i32.const 770 + i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.set $1 + loop $while-continue|0 local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + local.get $5 + i32.lt_u + if + block $while-break|0 + local.get $3 + i32.load8_u + local.set $6 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 128 + i32.and + if + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $7 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 224 + i32.and + i32.const 192 + i32.eq + if + local.get $1 + local.get $6 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $7 + i32.or + i32.store16 + else + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $4 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $6 + i32.const 240 + i32.and + i32.const 224 + i32.eq + if + local.get $6 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $7 + i32.const 6 + i32.shl + i32.or + local.get $4 + i32.or + local.set $4 + else + local.get $3 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $7 + i32.const 12 + i32.shl + i32.or + local.get $4 + i32.const 6 + i32.shl + i32.or + i32.or + local.set $4 + local.get $3 + i32.const 1 + i32.add + local.set $3 + end + local.get $4 + i32.const 65536 + i32.lt_u + if + local.get $1 + local.get $4 + i32.store16 + else + local.get $1 + local.get $4 + i32.const 65536 + i32.sub + local.tee $4 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $4 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + end + else + local.get $2 + local.get $6 + i32.eqz + i32.and + br_if $while-break|0 + local.get $1 + local.get $6 + i32.store16 + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end end - local.get $3 - i32.const 2 - i32.and - if + block $__inlined_func$~lib/rt/itcms/__renew$157 local.get $1 - i32.const 4 + local.get $0 i32.sub + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.const -4 i32.and - i32.eqz + i32.const 16 + i32.sub + i32.le_u if - i32.const 0 - i32.const 1488 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $2 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew$157 end + local.get $2 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add + local.get $2 local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $2 + i32.gt_u + select + memory.copy + local.get $1 + local.set $0 end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1488 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $2 - i32.add - i32.ne + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String.UTF8.encode@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 234 - i32.const 14 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if + block $2of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $2of2 $2of2 $outOfRange + end + unreachable + end i32.const 0 - i32.const 1488 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.set $1 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 + call $~lib/string/String.UTF8.encode + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add - local.get $1 - i32.store offset=96 - local.get $0 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 local.get $1 - i64.extend_i32_u - i64.lt_u + call $~lib/string/String.UTF8.decodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 382 - i32.const 14 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 19 - i32.add - i32.const -16 + i32.const -2 i32.and + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - local.set $1 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $4 + local.get $1 + i32.const 0 + i32.ne + local.set $2 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u if - i32.const 0 - i32.const 1488 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + block $while-break|0 + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.eqz + i32.and + br_if $while-break|0 + local.get $2 + i32.const 1 + i32.add + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $2 + i32.const 2 + i32.add + else + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + local.get $0 + i32.const 2 + i32.add + local.get $4 + i32.lt_u + i32.and + if + local.get $0 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $2 + i32.const 3 + i32.add + end + end + local.set $2 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end end end local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz if return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.get $~lib/rt/itcms/white local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.const 20 + i32.sub local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - unreachable - end - i32.const 55584 - i32.const 0 - i32.store - i32.const 57152 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 2 - i32.shl - i32.const 55584 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$158 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if local.get $1 - i32.const 16 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 55572 i32.lt_u + i32.and + i32.eqz if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 55584 - i32.add i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 1216 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$158 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 55584 - i32.const 57156 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 55584 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 55572 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.or + i32.store offset=4 end - global.get $~lib/rt/itcms/iter - local.tee $0 global.get $~lib/rt/itcms/toSpace - i32.ne - if + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne + i32.const 22784 + i32.load + i32.gt_u if - i32.const 0 - i32.const 1216 - i32.const 229 - i32.const 20 + i32.const 1344 + i32.const 1408 + i32.const 21 + i32.const 28 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 55572 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 55572 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1488 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub + i32.const 2 i32.shl + i32.const 22788 i32.add - i32.const 1 - i32.sub - local.set $1 + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 local.get $0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else local.get $0 - i32.load - i32.const -1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount i32.const 1 i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + global.set $~lib/rt/itcms/visitCount end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s if - i32.const 1152 - i32.const 1216 - i32.const 261 - i32.const 31 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$70 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.byteLength + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $5 + local.set $4 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + i32.add + local.set $6 + block $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 + loop $while-continue|0 + local.get $0 + local.get $6 + i32.lt_u + if + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u if - global.get $~lib/rt/itcms/total + local.get $4 + local.get $3 + i32.store8 + local.get $4 i32.const 1 - i32.shl - i32.const 1024 i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total + local.set $4 + local.get $1 + local.get $3 + i32.eqz + i32.and + br_if $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $4 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $4 + i32.const 2 + i32.add + else + local.get $3 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + if + local.get $3 + i32.const 56320 + i32.lt_u + local.get $0 + i32.const 2 + i32.add + local.get $6 + i32.lt_u + i32.and + if + local.get $0 + i32.load16_u offset=2 + local.tee $7 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $4 + local.get $3 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $7 + i32.const 1023 + i32.and + i32.or + local.tee $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $3 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $3 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $2 + if + local.get $2 + i32.const 2 + i32.eq + if + i32.const 1712 + i32.const 1776 + i32.const 742 + i32.const 49 + call $~lib/builtins/abort + unreachable + end + i32.const 65533 + local.set $3 + end + end + local.get $4 + local.get $3 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $4 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $4 + i32.const 3 + i32.add + end + local.set $4 + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + if + local.get $4 + i32.const 0 + i32.store8 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.sub @@ -1344,8 +1186,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1373,7 +1213,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1387,7 +1228,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1559,1309 +1402,1238 @@ memory.fill local.get $1 ) - (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $0 - i32.const 20 + (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.load offset=16 - i32.add - local.set $4 - local.get $1 - i32.const 0 - i32.ne - local.set $2 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - block $while-break|0 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if (result i32) + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - local.get $3 - i32.eqz + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and - br_if $while-break|0 - local.get $2 - i32.const 1 - i32.add - else - local.get $3 - i32.const 2048 - i32.lt_u - if (result i32) + i32.ne + if + local.get $0 local.get $2 - i32.const 2 - i32.add - else - local.get $3 - i32.const 64512 + i32.const -4 i32.and - i32.const 55296 - i32.eq + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount local.get $0 - i32.const 2 + i32.const 20 i32.add - local.get $4 - i32.lt_u + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 55572 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 i32.and + i32.ne if local.get $0 - i32.load16_u offset=2 - i32.const 64512 + local.get $2 + i32.const -4 i32.and - i32.const 56320 - i32.eq - if - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members end - local.get $2 - i32.const 3 - i32.add + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 end end - local.set $2 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter i32.const 2 - i32.add - local.set $0 - br $while-continue|0 + global.set $~lib/rt/itcms/state end + global.get $~lib/rt/itcms/visitCount + return end - end - local.get $2 - ) - (func $start:std/string-encoding - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1052 - i32.load - i32.const 12 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace i32.ne if - i32.const 0 - i32.const 1088 - i32.const 8 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 55572 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 55572 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1488 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1488 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 55572 - i32.sub - i32.const 1 i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1268 - i32.const 1264 - i32.store - i32.const 1272 - i32.const 1264 - i32.store - i32.const 1264 - global.set $~lib/rt/itcms/pinSpace - i32.const 1300 - i32.const 1296 - i32.store - i32.const 1304 - i32.const 1296 - i32.store - i32.const 1296 - global.set $~lib/rt/itcms/toSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 8 + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 + local.tee $4 + i32.const 7 i32.sub - i32.load offset=16 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 216 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 55 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 220 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 20 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - if - i32.const 0 - i32.const 1088 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - if - i32.const 0 - i32.const 1088 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 82 - i32.ne + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if - i32.const 0 - i32.const 1088 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 - i32.load8_u offset=9 - i32.const 216 - i32.ne + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if i32.const 0 - i32.const 1088 - i32.const 25 - i32.const 3 + i32.const 1488 + i32.const 221 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=10 - i32.const 98 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 26 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=11 - i32.const 223 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - call $~lib/string/String.UTF16.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1052 - i32.load - local.set $2 - local.get $1 - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $6 i32.const 4 i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 8 + local.get $3 + i32.const -4 + i32.and i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $3 i32.store - local.get $0 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 12 - i32.add + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.byteLength - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 + i32.const 1488 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return end local.get $0 - i32.load8_u offset=2 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 183 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + call $~lib/string/String.UTF16.decodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1088 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.load8_u offset=5 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.load8_u offset=6 - i32.const 240 - i32.ne - if + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1088 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 55584 + i32.const 0 + i32.store + i32.const 57152 + i32.const 0 + i32.store + loop $for-loop|0 local.get $0 - i32.load8_u offset=7 - i32.const 164 - i32.ne + i32.const 23 + i32.lt_u if + local.get $0 + i32.const 2 + i32.shl + i32.const 55584 + i32.add i32.const 0 - i32.const 1088 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 173 - i32.ne - if + i32.store offset=4 i32.const 0 - i32.const 1088 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 162 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 55584 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8EncodeNullTerminated - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1904 - i32.const 0 + end + i32.const 55584 + i32.const 57156 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 55584 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store + i32.const 1488 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1088 - i32.const 101 - i32.const 3 + i32.const 1488 + i32.const 389 + i32.const 16 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1904 - i32.const 0 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store + local.get $3 local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz + i32.const 16 + i32.sub + local.tee $5 + i32.eq if - i32.const 0 - i32.const 1088 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + else local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.const 0 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store + i32.const 1572 + i32.add local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1936 - call $~lib/string/String.__eq - i32.eqz + i32.gt_u if i32.const 0 - i32.const 1088 - i32.const 108 - i32.const 3 + i32.const 1488 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 32 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 1712 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store - i32.const 2000 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 + local.get $1 i32.ne if - i32.const 0 - i32.const 1088 - i32.const 122 + local.get $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 124 + i32.and i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.store - i32.const 2048 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.store offset=8 - local.get $0 - i32.const 2048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 127 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.store - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 2000 - i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2048 - i32.store offset=8 - local.get $0 - i32.const 2048 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 129 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 2112 - call $std/string-encoding/testRoundtrip - i32.const 15232 - call $std/string-encoding/testRoundtrip - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - return - end - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - call $start:std/string-encoding - ) - (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 + end + ) + (func $std/string-encoding/testRoundtrip (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + if + i32.const 55600 + i32.const 55648 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer local.get $0 i32.store + i32.const 1 + global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/rt/itcms/__new + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.store offset=12 local.get $1 - ) - (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + i32.eqz if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1088 + i32.const 153 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/string/String.UTF16.encode + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/string/String.UTF16.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + local.get $1 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - call $~lib/string/String.UTF16.decodeUnsafe + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~start + call $start:std/string-encoding + ) + (func $std/string-encoding/testUTF8EncodeNullTerminated + (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2878,590 +2650,142 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.eq + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 11 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + i32.const 0 + i32.const 1088 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$94 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$94 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + local.get $0 + i32.load8_u + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s + local.get $0 + i32.load8_u offset=1 + i32.const 144 + i32.ne if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1088 + i32.const 82 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.load8_u offset=2 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $1 - call $~lib/string/String.UTF8.byteLength - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.load8_u offset=3 + i32.const 183 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store - local.get $5 - local.set $4 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.load8_u offset=5 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - i32.add - local.set $6 - block $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if - local.get $4 - local.get $3 - i32.store8 - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $1 - local.get $3 - i32.eqz - i32.and - br_if $__inlined_func$~lib/string/String.UTF8.encodeUnsafe$1 - else - local.get $3 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $4 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $4 - i32.const 2 - i32.add - else - local.get $3 - i32.const 63488 - i32.and - i32.const 55296 - i32.eq - if - local.get $3 - i32.const 56320 - i32.lt_u - local.get $0 - i32.const 2 - i32.add - local.get $6 - i32.lt_u - i32.and - if - local.get $0 - i32.load16_u offset=2 - local.tee $7 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $4 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $7 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $3 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $2 - if - local.get $2 - i32.const 2 - i32.eq - if - i32.const 1712 - i32.const 1776 - i32.const 742 - i32.const 49 - call $~lib/builtins/abort - unreachable - end - i32.const 65533 - local.set $3 - end - end - local.get $4 - local.get $3 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $4 - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $4 - i32.const 3 - i32.add - end - local.set $4 - end - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $1 - if - local.get $4 - i32.const 0 - i32.store8 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $~lib/string/String.UTF8.encode@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s + i32.load8_u offset=6 + i32.const 240 + i32.ne if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1088 + i32.const 87 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $2of2 $2of2 $outOfRange - end - unreachable - end + local.get $0 + i32.load8_u offset=7 + i32.const 164 + i32.ne + if i32.const 0 - local.set $1 + i32.const 1088 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.encode - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/string-encoding/testUTF8EncodeNullTerminated - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s + i32.load8_u offset=8 + i32.const 173 + i32.ne if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 81 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 183 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 86 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 87 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - i32.const 164 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 173 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 89 - i32.const 3 + i32.const 0 + i32.const 1088 + i32.const 89 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -3530,40 +2854,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.get $1 - call $~lib/string/String.UTF8.decodeUnsafe - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $std/string-encoding/testUTF8DecodeUnsafe (local $0 i32) (local $1 i32) @@ -3807,388 +3097,1099 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/string-encoding/testRoundtrip (param $0 i32) + (func $start:std/string-encoding + (local $0 i32) (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1088 - i32.const 153 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/string/String.UTF16.encode - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - call $~lib/string/String.UTF16.decode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - i32.eqz - if + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 55572 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1268 + i32.const 1264 + i32.store + i32.const 1272 + i32.const 1264 + i32.store + i32.const 1264 + global.set $~lib/rt/itcms/pinSpace + i32.const 1300 + i32.const 1296 + i32.store + i32.const 1304 + i32.const 1296 + i32.store + i32.const 1296 + global.set $~lib/rt/itcms/toSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 55 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 220 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 82 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=10 + i32.const 98 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 26 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=11 + i32.const 223 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/string/String.UTF16.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + local.set $2 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + i32.add + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 144 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 183 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 240 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + i32.const 164 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 173 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 162 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8EncodeNullTerminated + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 101 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1904 i32.const 0 - i32.const 1088 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 - i32.const 1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const -2 - i32.and - local.tee $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22804 - i32.lt_s - if - i32.const 55600 - i32.const 55648 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.const 0 i32.const 1 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1936 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - local.tee $3 - local.get $1 - i32.add - local.set $5 - local.get $3 - local.get $5 - i32.gt_u - if + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 i32.const 0 - i32.const 1776 - i32.const 770 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.set $1 - loop $while-continue|0 - local.get $3 - local.get $5 - i32.lt_u + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz if - block $while-break|0 - local.get $3 - i32.load8_u - local.set $6 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $6 - i32.const 128 - i32.and - if - local.get $3 - local.get $5 - i32.eq - br_if $while-break|0 - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.set $7 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $6 - i32.const 224 - i32.and - i32.const 192 - i32.eq - if - local.get $1 - local.get $6 - i32.const 31 - i32.and - i32.const 6 - i32.shl - local.get $7 - i32.or - i32.store16 - else - local.get $3 - local.get $5 - i32.eq - br_if $while-break|0 - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.set $4 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $6 - i32.const 240 - i32.and - i32.const 224 - i32.eq - if - local.get $6 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $7 - i32.const 6 - i32.shl - i32.or - local.get $4 - i32.or - local.set $4 - else - local.get $3 - local.get $5 - i32.eq - br_if $while-break|0 - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $7 - i32.const 12 - i32.shl - i32.or - local.get $4 - i32.const 6 - i32.shl - i32.or - i32.or - local.set $4 - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $4 - i32.const 65536 - i32.lt_u - if - local.get $1 - local.get $4 - i32.store16 - else - local.get $1 - local.get $4 - i32.const 65536 - i32.sub - local.tee $4 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $4 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - end - else - local.get $2 - local.get $6 - i32.eqz - i32.and - br_if $while-break|0 - local.get $1 - local.get $6 - i32.store16 - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end + i32.const 0 + i32.const 1088 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - block $__inlined_func$~lib/rt/itcms/__renew$157 - local.get $1 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 32 i32.sub - local.tee $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22804 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2000 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u + i32.load offset=16 + i32.const 4 + i32.ne if - local.get $3 - local.get $2 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew$157 + i32.const 0 + i32.const 1088 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $1 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store + i32.const 2048 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - local.get $3 - i32.load offset=16 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store offset=8 + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.gt_u - select - memory.copy - local.get $1 + i32.store offset=12 + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.decode local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store offset=8 + local.get $0 + i32.const 2048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8DecodeUnsafe + i32.const 2112 + call $std/string-encoding/testRoundtrip + i32.const 15232 + call $std/string-encoding/testRoundtrip + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 55600 + i32.const 55648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/std/string-nonnull.release.wat b/tests/compiler/std/string-nonnull.release.wat index 63edc700be..b26fd35230 100644 --- a/tests/compiler/std/string-nonnull.release.wat +++ b/tests/compiler/std/string-nonnull.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func (result i32))) - (type $1 (func)) - (type $2 (func (param i32 i32 i32 i32))) + (type $0 (func)) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) (memory $0 1) @@ -9,6 +9,64 @@ (data $0.1 (i32.const 1048) "\02") (export "memory" (memory $0)) (start $~start) + (func $~lib/string/String.__eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__ne (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + call $~lib/string/String.__eq + i32.const 0 + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~start (local $0 i32) global.get $~lib/memory/__stack_pointer @@ -60,28 +118,22 @@ i32.const 1056 i32.store offset=4 call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1052 - i32.load - drop - end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1052 - i32.load - drop - end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1052 + i32.load + drop global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 @@ -130,62 +182,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/string/String.__eq (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1068 - i32.lt_s - if - i32.const 33856 - i32.const 33904 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String.__ne (result i32) - (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1068 - i32.lt_s - if - i32.const 33856 - i32.const 33904 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=4 - call $~lib/string/String.__eq - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/std/string.release.wat b/tests/compiler/std/string.release.wat index 57e9b4af89..ed9cf71122 100644 --- a/tests/compiler/std/string.release.wat +++ b/tests/compiler/std/string.release.wat @@ -2,25 +2,25 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func (param i32 i32 i32) (result i32))) (type $2 (func (param i32) (result i32))) - (type $3 (func)) - (type $4 (func (param i32 i32))) + (type $3 (func (param i32 i32))) + (type $4 (func)) (type $5 (func (param i32))) (type $6 (func (result i32))) - (type $7 (func (param i32 i32 i32))) - (type $8 (func (param i32 i32) (result f64))) - (type $9 (func (param i32) (result f64))) - (type $10 (func (param i64 i32) (result i32))) + (type $7 (func (param i32) (result f64))) + (type $8 (func (param i64 i32) (result i32))) + (type $9 (func (param i32 i32) (result f64))) + (type $10 (func (param i32 i32 i32))) (type $11 (func (param i32 i32 i32 i32))) - (type $12 (func (param i32 i32 i32 i32) (result i32))) - (type $13 (func (param i32 i32 i64))) - (type $14 (func (param f64 i32) (result f64))) - (type $15 (func (param i32 i64 i32 i32))) - (type $16 (func (param i32 i64 i32))) - (type $17 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $18 (func (param f64 i32) (result i32))) - (type $19 (func (result i64))) - (type $20 (func (param f64) (result i32))) - (type $21 (func (param f32) (result i32))) + (type $12 (func (param f64) (result i32))) + (type $13 (func (param i32 i32 i32 i32) (result i32))) + (type $14 (func (param i32 i64 i32 i32))) + (type $15 (func (param f32) (result i32))) + (type $16 (func (param f64 i32) (result i32))) + (type $17 (func (result i64))) + (type $18 (func (param i32 i64 i32))) + (type $19 (func (param i32 i32 i64))) + (type $20 (func (param f64 i32) (result f64))) + (type $21 (func (param i64 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 1056)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -984,1333 +984,854 @@ (export "getString" (func $std/string/getString)) (export "memory" (memory $0)) (start $~start) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $1 - local.get $3 - i32.const 4 - i32.ge_u - if (result i32) - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - else + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.eqz + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - loop $do-loop|0 - local.get $1 - i64.load - local.get $2 - i64.load - i64.eq - if - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.tee $3 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - loop $while-continue|1 - local.get $3 - local.tee $0 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 i32.sub - local.set $3 + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - if - local.get $1 - i32.load16_u - local.tee $0 - local.get $2 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $0 - local.get $4 - i32.sub - return - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $std/string/str - local.tee $0 + (func $~lib/number/F64.parseFloat (param $0 i32) (result f64) + (local $1 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1264 - call $~lib/rt/itcms/__visit - i32.const 14064 - call $~lib/rt/itcms/__visit - i32.const 15712 - call $~lib/rt/itcms/__visit - i32.const 1376 - call $~lib/rt/itcms/__visit - i32.const 16640 - call $~lib/rt/itcms/__visit - i32.const 17696 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtod + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) + (local $2 i64) (local $3 i32) - local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + (local $4 i64) + (local $5 i64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$287 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 59404 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$287 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + i32.const 59424 + i32.const 59472 i32.const 1 - else - local.get $1 - i32.const 26608 - i32.load - i32.gt_u - if - i32.const 1264 - i32.const 1568 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 26612 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 - local.get $0 + i32.const 2 + i32.lt_s local.get $1 - i32.load offset=4 - i32.const 3 - i32.and + i32.const 36 + i32.gt_s i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz if - i32.const 0 - i32.const 1648 - i32.const 268 - i32.const 14 + i32.const 16048 + i32.const 16176 + i32.const 401 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + local.get $0 + i64.eqz if - i32.const 0 - i32.const 1648 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3392 + return end local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 + i32.const 10 + i32.eq if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + local.get $0 + i64.const 4294967295 + i64.le_u if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add + i32.wrap_i64 local.tee $1 - i32.load offset=4 - i32.const -2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store local.get $3 - i32.rotl - i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if + local.get $6 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end end + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $1 + call $~lib/util/number/utoa64_dec_lut end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if + else local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz + i32.const 16 + i32.eq if - i32.const 0 - i32.const 1648 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $3 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 + i32.add + i32.load + i32.store + local.get $0 + i64.const 8 + i64.shr_u + local.set $0 + br $while-continue|0 + end + end + local.get $1 + i32.const 1 + i32.and + if + local.get $3 + local.get $0 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$180 (result i32) + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$180 + end + local.get $1 + i64.extend_i32_s + local.tee $5 + local.set $4 + i32.const 1 + local.set $3 + loop $while-continue|01 + local.get $2 + local.get $4 + i64.ge_u + if + local.get $2 + local.get $4 + i64.div_u + local.set $2 + local.get $4 + local.get $4 + i64.mul + local.set $4 + local.get $3 + i32.const 1 + i32.shl + local.set $3 + br $while-continue|01 + end + end + loop $while-continue|1 + local.get $2 + i64.const 0 + i64.ne + if + local.get $2 + local.get $5 + i64.div_u + local.set $2 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + i32.const 1 + i32.sub + end + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $6 + local.get $1 + call $~lib/util/number/utoa64_any_core + end end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + ) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - i32.const 0 - i32.const 1648 - i32.const 233 - i32.const 14 + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 23280 + local.set $1 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + i32.const 7696 + local.set $1 + local.get $0 + local.get $0 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 8960 + i32.const 23312 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 23344 + local.get $2 + memory.copy + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $2 - i32.add - i32.ne + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - i32.const 0 - i32.const 1648 - i32.const 234 - i32.const 14 + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add i32.const 2 - i32.shl - i32.add + i32.lt_s local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl + i32.const 36 + i32.gt_s i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u if - i32.const 0 - i32.const 1648 - i32.const 382 - i32.const 14 + i32.const 16048 + i32.const 16176 + i32.const 350 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.load offset=1568 - local.tee $3 + i32.eqz if - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1648 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1648 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if + global.set $~lib/memory/__stack_pointer + i32.const 3392 return end local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.const 10 + i32.eq if - unreachable - end - i32.const 59408 - i32.const 0 - i32.store - i32.const 60976 - i32.const 0 - i32.store - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 23 + i32.const 100000 i32.lt_u - if + if (result i32) local.get $0 - i32.const 2 - i32.shl - i32.const 59408 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa32_dec_lut + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 31 + local.get $0 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $0 + i64.extend_i32_u + local.set $3 + loop $while-continue|0 local.get $1 - i32.const 16 - i32.lt_u + i32.const 2 + i32.ge_u if - local.get $0 - i32.const 4 - i32.shl + local.get $2 local.get $1 - i32.add i32.const 2 + i32.sub + local.tee $1 + i32.const 1 i32.shl - i32.const 59408 i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 + local.get $3 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 i32.add - local.set $1 - br $for-loop|1 + i32.load + i32.store + local.get $3 + i64.const 8 + i64.shr_u + local.set $3 + br $while-continue|0 end end - local.get $0 + local.get $1 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 59408 - i32.const 60980 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 59408 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne + if + local.get $2 + local.get $3 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + local.get $0 + i64.extend_i32_u + local.set $4 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$175 (result i32) + local.get $1 + i32.popcnt + i32.const 1 + i32.eq if - local.get $0 - global.set $~lib/rt/itcms/iter + i32.const 63 + local.get $4 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$175 + end + local.get $1 + i64.extend_i32_s + local.tee $5 + local.set $3 + i32.const 1 + local.set $2 + loop $while-continue|01 + local.get $3 + local.get $4 + i64.le_u if - local.get $0 + local.get $4 + local.get $3 + i64.div_u + local.set $4 + local.get $3 + local.get $3 + i64.mul + local.set $3 local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return + i32.const 1 + i32.shl + local.set $2 + br $while-continue|01 end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 59404 - i32.lt_u + loop $while-continue|1 + local.get $4 + i64.const 0 + i64.ne if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 + local.get $4 + local.get $5 + i64.div_u + local.set $4 + local.get $2 + i32.const 1 i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 + local.set $2 + br $while-continue|1 end end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + local.get $2 + i32.const 1 + i32.sub end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz + i64.extend_i32_u + local.get $6 local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1440 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 59404 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add + call $~lib/util/number/utoa64_any_core + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1376 + i32.const 1440 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 59404 - i32.ge_u + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1648 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load + global.get $~lib/rt/itcms/total i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 334 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1376 - i32.const 1440 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$70 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end global.get $~lib/rt/tlsf/ROOT @@ -2354,8 +1875,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -2383,7 +1902,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -2397,7 +1917,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -2569,1810 +2091,1749 @@ memory.fill local.get $1 ) - (func $~lib/string/String.fromCharCode@varargs (param $0 i32) (result i32) - (local $1 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const -1 - local.set $1 + (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 - call $~lib/string/String.fromCharCode + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - i32.const 0 - i32.const 1440 - i32.const 295 - i32.const 14 + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1264 + i32.const 15664 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.load offset=4 - i32.const 3 - i32.and - i32.eq + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end + i32.const 15712 + i32.const 15664 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/math/ipow32 (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 5 - local.set $1 - i32.const 1 - local.set $2 + (local $3 i64) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.const 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + if + i32.const 16048 + i32.const 16176 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3392 + return + end i32.const 0 - i32.le_s + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + select + local.set $2 + local.get $1 + i32.const 10 + i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.eqz - return + local.get $4 + i32.add + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut else - local.get $0 - i32.const 1 + local.get $1 + i32.const 16 i32.eq if - i32.const 5 - return - else - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 31 + local.get $2 + i32.clz + i32.sub i32.const 2 - i32.eq - if - i32.const 25 - return - else - local.get $0 - i32.const 32 - i32.lt_s + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $4 + i32.add + local.set $7 + local.get $2 + i64.extend_i32_u + local.set $3 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u if - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - i32.const 31 - local.get $0 - i32.clz - i32.sub - br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 - end - i32.const 5 - i32.const 1 - local.get $0 - i32.const 1 - i32.and - select - local.set $2 - local.get $0 - i32.const 1 - i32.shr_u - local.set $0 - i32.const 25 - local.set $1 - end - local.get $1 - local.get $2 - i32.mul - local.get $2 - local.get $0 - i32.const 1 - i32.and - select - local.set $2 - local.get $0 - i32.const 1 - i32.shr_u - local.set $0 - local.get $1 - local.get $1 - i32.mul - local.set $1 - end - local.get $1 - local.get $2 - i32.mul - local.get $2 - local.get $0 - i32.const 1 - i32.and - select - local.set $2 - local.get $0 - i32.const 1 - i32.shr_u - local.set $0 - local.get $1 - local.get $1 - i32.mul - local.set $1 - end - local.get $1 - local.get $2 - i32.mul - local.get $2 - local.get $0 - i32.const 1 - i32.and - select - local.set $2 - local.get $0 - i32.const 1 - i32.shr_u - local.set $0 - local.get $1 - local.get $1 - i32.mul - local.set $1 - end - local.get $1 - local.get $2 - i32.mul - local.get $2 + local.get $7 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 + i32.add + i32.load + i32.store + local.get $3 + i64.const 8 + i64.shr_u + local.set $3 + br $while-continue|0 + end + end + local.get $1 + i32.const 1 + i32.and + if + local.get $7 + local.get $3 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.const 16640 + i32.add + i32.load16_u + i32.store16 + end + else + local.get $2 + i64.extend_i32_u + local.set $5 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$171 (result i32) + local.get $1 + i32.popcnt + i32.const 1 + i32.eq + if + i32.const 63 + local.get $5 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$171 + end + local.get $1 + i64.extend_i32_s + local.tee $6 + local.set $3 + i32.const 1 + local.set $0 + loop $while-continue|01 + local.get $3 + local.get $5 + i64.le_u + if + local.get $5 + local.get $3 + i64.div_u + local.set $5 + local.get $3 + local.get $3 + i64.mul + local.set $3 local.get $0 i32.const 1 - i32.and - select - local.set $2 + i32.shl + local.set $0 + br $while-continue|01 + end + end + loop $while-continue|1 + local.get $5 + i64.const 0 + i64.ne + if + local.get $5 + local.get $6 + i64.div_u + local.set $5 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|1 end - local.get $2 - return end + local.get $0 + i32.const 1 + i32.sub end - end - end - loop $while-continue|1 - local.get $0 - if - local.get $1 - local.get $2 - i32.mul - local.get $2 - local.get $0 + local.tee $7 i32.const 1 - i32.and - select - local.set $2 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.const 1 - i32.shr_u - local.set $0 - local.get $1 + local.get $4 + i32.add + local.get $2 + i64.extend_i32_u + local.get $7 local.get $1 - i32.mul - local.set $1 - br $while-continue|1 + call $~lib/util/number/utoa64_any_core end end - local.get $2 - ) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) + local.get $4 + if local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - i32.const 1023 - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - local.get $1 - i32.const 1023 - i32.ge_s - select - local.set $1 - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - i32.const -1022 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - local.get $1 - i32.const -1022 - i32.le_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 - end + i32.const 45 + i32.store16 end - local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String#replaceAll (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $1 - local.get $0 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=16 - local.get $0 - return + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_u - select - memory.copy - local.get $2 - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 + i32.store + block $folding-inner1 local.get $1 - i32.const 10000 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $8 + local.get $3 i32.ge_u if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i64.load32_u local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.get $8 + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 + end + br $folding-inner1 end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i32.load i32.store - else - local.get $0 local.get $2 - i32.const 1 + i32.const 20 i32.sub + i32.load offset=16 i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - local.get $3 - i64.extend_i32_s - local.set $5 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and - if - loop $do-loop|1 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $1 - local.get $5 - i64.div_u - local.tee $1 - local.get $5 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.const 17696 - i32.add - i32.load16_u - i32.store16 - local.get $1 - i64.const 0 - i64.ne - br_if $do-loop|1 - end - else - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s + i32.shr_u local.set $4 - local.get $5 - i64.const 1 - i64.sub - local.set $5 - loop $do-loop|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $5 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.const 17696 - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $4 - i64.shr_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-loop|0 - end - end - ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i32) - loop $while-continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - if - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $1 - i64.const 100000000 - i64.div_u - local.tee $1 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.tee $3 - i32.const 10000 - i32.rem_u - local.tee $4 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i64.load32_u + block $folding-inner0 + local.get $8 + i32.eqz + if + local.get $4 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $3 + i32.const 1 + i32.add + local.get $4 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=8 + local.get $11 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.set $1 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_u + if + local.get $11 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $11 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + br $folding-inner0 + end local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i64.load32_u + local.get $8 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=12 + local.get $11 + local.get $0 + local.get $3 + memory.copy + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $10 + call $~lib/string/String#indexOf + local.tee $3 + i32.const -1 + i32.xor + if + local.get $11 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $8 + i32.add + local.set $10 + br $while-continue|1 + end + end + br $folding-inner0 + end local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 16220 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.set $5 + loop $while-continue|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $10 + call $~lib/string/String#indexOf + local.tee $7 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String.__not + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=16 + end + local.get $7 + local.get $10 + i32.sub + local.tee $6 + local.get $9 + i32.add + local.get $4 + i32.add + local.get $5 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + local.get $11 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 1 + i32.shl + memory.copy + local.get $11 + local.get $6 + local.get $9 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $4 + local.get $6 + i32.add + local.set $9 + local.get $7 + local.get $8 + i32.add + local.set $10 + br $while-continue|2 + end + end + local.get $11 + if + local.get $3 + local.get $10 + i32.sub + local.tee $1 + local.get $9 + i32.add + local.get $5 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + local.get $1 + if + local.get $11 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 1 + i32.shl + memory.copy + end + local.get $1 + local.get $9 + i32.add + local.tee $0 + local.get $5 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $0 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=16 + end + br $folding-inner0 + end + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $10 - i64.const 1 + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $11 - i64.extend_i32_s - local.tee $0 - i64.shl - local.tee $7 - i64.const 1 - i64.sub - local.tee $12 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 - i64.and - local.set $9 + i32.const 2 + i32.lt_s local.get $1 - local.get $0 - i64.shr_u + i32.const 36 + i32.gt_s + i32.or + if + i32.const 16048 + i32.const 16176 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3392 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u + i32.const 1 + i32.shl + local.tee $4 + select + local.set $0 + local.get $1 + i32.const 10 + i32.eq + if + local.get $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $7 i32.const 1 + i32.shl + local.get $4 i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.add + local.get $1 + local.get $7 + call $~lib/util/number/utoa32_dec_lut else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $1 + i32.const 1 + i32.shl + local.get $4 i32.add - local.get $5 - i32.const 1000 - i32.ge_u + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 i32.add + local.get $0 + local.get $1 + call $~lib/util/number/utoa64_dec_lut end else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 + local.tee $1 + i32.const 1 + i32.shl + local.get $4 i32.add - local.get $5 - i32.const 100000000 - i32.ge_u + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 i32.add - end - end - local.set $8 - loop $while-continue|0 - local.get $8 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $8 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 + local.set $7 + loop $while-continue|0 + local.get $1 + i32.const 2 + i32.ge_u + if + local.get $7 + local.get $1 + i32.const 2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.wrap_i64 + i32.const 255 + i32.and + i32.const 2 + i32.shl + i32.const 16640 + i32.add + i32.load + i32.store + local.get $0 + i64.const 8 + i64.shr_u + local.set $0 + br $while-continue|0 end - i32.const 0 - local.set $6 end - local.get $4 - local.get $6 - i32.or + local.get $1 + i32.const 1 + i32.and if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 + local.get $7 + local.get $0 + i32.wrap_i64 + i32.const 6 i32.shl - i32.const 23344 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 + i32.const 16640 i32.add + i32.load16_u i32.store16 end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $9 - i64.add - local.tee $0 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 24272 - i32.add - i64.load32_u + else + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + block $__inlined_func$~lib/util/number/ulog_base$185 (result i32) local.get $1 - i64.shl - local.set $7 - local.get $4 + i32.popcnt i32.const 1 - i32.shl - i32.const 23342 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|3 - local.get $0 - local.get $10 - i64.lt_u - local.get $3 + i32.eq + if + i32.const 63 local.get $0 - i64.sub - local.get $7 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 31 + local.get $1 + i32.clz + i32.sub + i32.div_u + i32.const 1 + i32.add + br $__inlined_func$~lib/util/number/ulog_base$185 + end + local.get $1 + i64.extend_i32_s + local.tee $6 + local.set $5 + i32.const 1 + local.set $3 + loop $while-continue|01 + local.get $2 + local.get $5 i64.ge_u - i32.and - if (result i32) - local.get $10 - local.get $0 - local.get $7 - i64.add - local.tee $1 - i64.gt_u - local.get $10 - local.get $0 - i64.sub - local.get $1 - local.get $10 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 + if + local.get $2 + local.get $5 + i64.div_u + local.set $2 + local.get $5 + local.get $5 + i64.mul + local.set $5 + local.get $3 + i32.const 1 + i32.shl + local.set $3 + br $while-continue|01 end + end + loop $while-continue|1 + local.get $2 + i64.const 0 + i64.ne if + local.get $2 local.get $6 + i64.div_u + local.set $2 + local.get $3 i32.const 1 - i32.sub - local.set $6 - local.get $0 - local.get $7 - i64.add - local.set $0 - br $while-continue|3 + i32.add + local.set $3 + br $while-continue|1 end end - local.get $2 - local.get $6 - i32.store16 - local.get $4 - return + local.get $3 + i32.const 1 + i32.sub end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $9 - i64.const 10 - i64.mul - local.tee $1 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $0 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 + local.tee $7 i32.const 1 i32.shl - i32.const 23344 + local.get $4 i32.add - local.get $0 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $4 i32.add - i32.store16 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $1 - local.get $12 - i64.and - local.tee $9 - local.get $3 - i64.ge_u - br_if $while-continue|4 - end - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $10 - i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 24272 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 23342 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|6 - local.get $1 - local.get $9 - i64.gt_u - local.get $3 - local.get $9 - i64.sub - local.get $7 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $7 - local.get $9 - i64.add - local.tee $0 - i64.gt_u - local.get $1 - local.get $9 - i64.sub local.get $0 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 - i32.sub - local.set $6 local.get $7 - local.get $9 - i64.add - local.set $9 - br $while-continue|6 + local.get $1 + call $~lib/util/number/utoa64_any_core end end - local.get $2 - local.get $6 - i32.store16 local.get $4 + if + local.get $3 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - local.get $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s if - local.get $0 - local.get $1 + i32.const 59424 + i32.const 59472 i32.const 1 - i32.shl + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 return end - local.get $1 local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - local.get $1 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.set $2 + local.get $4 local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 local.get $1 local.get $3 - i32.lt_s + call $~lib/util/string/compareImpl + i32.eqz if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + local.get $2 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - local.get $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/string/String#localeCompare (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 - i32.gt_s - i32.and - if (result i32) + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.tee $0 + local.get $2 + local.get $3 + i32.sub + local.get $0 + select + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.gt_s + local.get $0 + i32.const 0 + i32.lt_s + i32.sub + ) + (func $~lib/string/String#replace (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.le_u + if + local.get $3 + local.get $4 + i32.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/string/String#indexOf + local.tee $1 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + local.get $4 + local.get $3 + i32.sub + local.tee $6 + i32.add + local.tee $4 + if + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 1 i32.shl - i32.add - local.tee $0 i32.const 2 - i32.add + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + local.get $4 local.get $0 - i32.const 0 + local.get $1 + i32.const 1 + i32.shl + local.tee $7 + memory.copy + local.get $4 + local.get $7 + i32.add local.get $2 - i32.sub + local.get $5 i32.const 1 i32.shl memory.copy - local.get $0 - i32.const 46 - i32.store16 + local.get $4 local.get $1 + local.get $5 + i32.add i32.const 1 + i32.shl i32.add - else - local.get $3 - i32.const 0 - i32.le_s + local.get $0 + local.get $1 local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 - i32.add - end + i32.add + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $1 + i32.sub + i32.const 1 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/number/dtoa_core (param $0 f64) (param $1 i32) (result i32) - (local $2 i64) + (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $3 - if - i32.const 23344 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - if (result i32) + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 local.get $0 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $5 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.set $9 - local.get $5 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - local.set $2 - local.get $9 + local.get $1 + i32.eq + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - local.get $9 - select - i32.const 150 + i32.shr_u + local.tee $2 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 i32.sub - else + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 local.get $2 - i64.const 4503599627370495 - i64.and - local.get $5 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - local.set $2 - local.get $5 - i32.const 1 - local.get $5 + i32.gt_s + local.get $2 + local.get $3 + i32.gt_s + local.get $0 select - i32.const 1075 - i32.sub + return end - local.tee $9 - i32.const 1 - i32.sub - local.get $2 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $4 - i64.clz - i32.wrap_i64 - local.tee $10 - i32.sub - local.set $5 - local.get $4 - local.get $10 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $2 - local.get $2 - i64.const 8388608 - i64.const 4503599627370496 - local.get $1 - select - i64.eq - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $1 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $9 - local.get $1 - i32.sub - local.get $5 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $5 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_sat_f64_s - local.tee $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - f64.convert_i32_s + i32.store offset=4 local.get $0 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $1 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 i32.const 3 - i32.shl - local.tee $5 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/string/String#split@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - global.set $~lib/util/number/_K - local.get $5 - i32.const 23400 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.const 24096 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $2 - local.get $2 - i64.clz - i64.shl - local.tee $2 - i64.const 4294967295 - i64.and - local.set $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - local.get $2 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $6 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $7 - global.get $~lib/util/number/_frc_plus - local.tee $4 - i64.const 4294967295 - i64.and - local.set $13 - local.get $4 - i64.const 32 - i64.shr_u - local.tee $4 - local.get $12 - i64.mul - local.get $12 - local.get $13 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $8 - global.get $~lib/util/number/_frc_minus - local.tee $14 - i64.const 4294967295 - i64.and - local.set $15 - local.get $14 - i64.const 32 - i64.shr_u - local.tee $14 - local.get $12 - i64.mul - local.get $12 - local.get $15 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 - local.get $3 - i32.const 1 - i32.shl - i32.const 23344 - i32.add - local.get $2 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $2 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $4 - i64.mul - local.get $8 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $13 - i64.mul - local.get $8 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $4 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $4 - local.get $2 - local.get $14 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add local.get $2 - local.get $15 - i64.mul - local.get $12 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $3 - call $~lib/util/number/genDigits - local.get $3 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $3 + call $~lib/string/String#split + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/string/getString (result i32) - global.get $std/string/str - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $folding-inner1 - end - unreachable - end - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~start - call $start:std/string - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4391,46 +3852,42 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end block $folding-inner0 - local.get $1 - i32.eqz local.get $0 - i32.eqz - i32.or + local.get $1 + i32.eq br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $2 + local.tee $2 + i32.eqz + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $2 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - i32.ne - br_if $folding-inner0 + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4440,13 +3897,25 @@ local.get $0 i32.const 0 local.get $1 + local.get $3 local.get $2 + local.get $2 + local.get $3 + i32.gt_s + local.tee $0 + select call $~lib/util/string/compareImpl - i32.eqz + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.lt_s + local.get $0 + local.get $1 + select return end global.get $~lib/memory/__stack_pointer @@ -4455,10 +3924,12 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~lib/string/String#at (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4473,184 +3944,191 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 - i32.const 0 + local.set $4 local.get $1 i32.const 0 i32.lt_s - select - i32.add - local.tee $1 - local.get $2 - i32.ge_u + if (result i32) + i32.const 1 + else + local.get $4 + i64.extend_i32_s + local.get $1 + i64.extend_i32_s + i64.mul + i64.const 268435456 + i64.gt_u + end if - i32.const 1264 + i32.const 14064 i32.const 1328 - i32.const 57 - i32.const 31 + i32.const 334 + i32.const 7 call $~lib/builtins/abort unreachable end - i32.const 2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 + local.get $4 + i32.eqz local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + i32.eqz + i32.or if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - i32.ge_u + i32.eq if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + local.get $0 return end global.get $~lib/memory/__stack_pointer - i32.const 2 + local.get $1 + local.get $4 + i32.mul + i32.const 1 + i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 - local.get $0 - local.get $1 + local.get $4 i32.const 1 i32.shl - i32.add - i32.load16_u - i32.store16 + local.tee $4 + local.get $1 + i32.mul + local.set $1 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.gt_u + if + local.get $2 + local.get $3 + i32.add + local.get $0 + local.get $4 + memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + br $while-continue|0 + end + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) - (func $~lib/string/String.__not (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $1 + local.get $3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 + i32.ge_u if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or else - i32.const 0 + i32.const 1 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer i32.eqz - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s if - i32.const 59424 - i32.const 59472 - i32.const 1 + loop $do-loop|0 + local.get $1 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $3 + local.tee $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $3 + local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 + local.get $2 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $0 + local.get $4 + i32.sub + return + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.fromCharCodes (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4672,58 +4150,102 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 local.get $0 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $4 + local.get $3 + local.get $2 + local.get $2 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $2 + local.get $4 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $4 + i32.eqz + local.get $2 local.get $1 i32.const 1 i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 2 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $1 local.get $0 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + local.get $4 + i32.add + local.get $3 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) - (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4743,97 +4265,76 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u local.tee $3 - i32.eqz + local.get $1 + i32.const 0 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $1 i32.const 0 - return + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 + local.get $1 i32.sub - i32.load offset=16 + local.tee $3 + local.get $2 + local.get $3 + i32.lt_s + select i32.const 1 - i32.shr_u - local.tee $4 - i32.eqz + i32.shl + local.tee $2 + i32.const 0 + i32.le_s if global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + i32.const 1712 return end + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.set $2 - local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.le_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $1 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $3 ) (func $~lib/string/String#padStart (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -5096,11 +4597,12 @@ global.set $~lib/memory/__stack_pointer local.get $6 ) - (func $~lib/string/String#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5115,112 +4617,56 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 0 i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + i32.const 2 + i32.shl local.tee $4 - i32.eqz + i32.const 1 + call $~lib/rt/itcms/__new + local.set $3 + local.get $2 if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - return + local.get $3 + local.get $2 + local.get $4 + memory.copy end - local.get $2 - i32.const 0 - local.get $2 + local.get $3 + i32.store + i32.const 16 + local.get $1 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $4 + call $~lib/rt/itcms/__link + local.get $1 local.get $3 - i32.sub - local.tee $4 - local.get $2 + i32.store offset=4 + local.get $1 local.get $4 - i32.lt_s - select - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $1 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const -1 + local.get $1 ) - (func $~lib/string/String#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtob (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -5235,145 +4681,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#localeCompare (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.tee $0 - local.get $2 - local.get $3 - i32.sub - local.get $0 - select - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.gt_s - local.get $0 - i32.const 0 - i32.lt_s - i32.sub - ) - (func $~lib/string/String#trimStart (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -5383,776 +4692,672 @@ i32.load offset=16 i32.const -2 i32.and - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if (result i32) - block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $0 - local.get $1 - i32.add - i32.load16_u - local.tee $3 - i32.const 5760 - i32.lt_u - if - local.get $3 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $3 - i32.const 9 + local.tee $1 + i32.const 8 + i32.gt_u + if (result i32) + loop $while-continue|0 + local.get $1 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$4 (result i32) + local.get $0 + local.get $1 + i32.add + i32.const 2 i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace - end - i32.const 1 - local.get $3 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace - drop - block $break|0 - block $case6|0 - local.get $3 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8287 - i32.eq - br_if $case6|0 + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if local.get $3 - i32.const 12288 + i32.const 128 + i32.or + i32.const 160 i32.eq - br_if $case6|0 local.get $3 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$4 end i32.const 1 - br $__inlined_func$~lib/util/string/isSpace + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$4 + drop + block $break|0 + block $case6|0 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$4 + end + i32.const 0 end + else i32.const 0 end - else - i32.const 0 + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end end - if + local.get $1 + i32.const 8 + i32.gt_u + if (result i32) + loop $while-continue|1 + local.get $1 + local.get $2 + i32.gt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$5 (result i32) + local.get $0 + local.get $2 + i32.add + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$5 + end + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$5 + drop + block $break|00 + block $case6|01 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|01 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|01 + br $break|00 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$5 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + local.get $1 + local.get $2 + i32.sub + else local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 end + else + local.get $1 end - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.eqz + i32.const 8 + i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1712 + i32.const 0 return end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 local.get $0 - local.get $1 - i32.add local.get $2 - memory.copy + i32.add + i64.load + i64.const 28429475166421108 + i64.eq global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) - (func $~lib/string/String#trimEnd (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $3 - local.set $1 loop $while-continue|0 local.get $1 - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$1 (result i32) - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.sub - i32.load16_u - local.tee $2 - i32.const 5760 - i32.lt_u - if - local.get $2 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $2 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$1 - end - i32.const 1 - local.get $2 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$1 - drop - block $break|0 - block $case6|0 - local.get $2 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $2 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $2 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $2 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $2 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $2 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $2 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$1 - end - i32.const 0 - end - else - i32.const 0 - end + i32.const 10000 + i32.ge_u if local.get $1 - i32.const 2 - i32.sub + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u local.set $1 - br $while-continue|0 - end - end - local.get $1 - i32.eqz + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 end local.get $1 - local.get $3 - i32.eq + i32.const 10 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i32.load + i32.store + else local.get $0 - return + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/string/String#trim (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.shl - local.set $1 - loop $while-continue|0 - local.get $1 - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$2 (result i32) - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.sub - i32.load16_u - local.tee $4 - i32.const 5760 - i32.lt_u - if - local.get $4 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $4 - i32.const 9 + block $folding-inner4 + block $folding-inner3 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + local.get $2 + i32.eqz + br_if $folding-inner1 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=12 + i32.eqz + if + local.get $2 + i32.const 1 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner4 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$2 - end - i32.const 1 - local.get $4 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$2 - drop - block $break|0 - block $case6|0 - local.get $4 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$2 - end - i32.const 0 - end - else - i32.const 0 - end - if - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $1 - local.get $2 - i32.gt_u - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$3 (result i32) - local.get $0 - local.get $2 - i32.add - i32.load16_u - local.tee $4 - i32.const 5760 - i32.lt_u - if - local.get $4 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $4 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$3 - end - i32.const 1 - local.get $4 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$3 - drop - block $break|00 - block $case6|01 - local.get $4 - i32.const 5760 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 8232 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 8233 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 8239 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 8287 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 12288 - i32.eq - br_if $case6|01 - local.get $4 - i32.const 65279 - i32.eq - br_if $case6|01 - br $break|00 - end + i32.load offset=16 i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$3 - end - i32.const 0 - end - else - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|1 - end - end - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return - end - local.get $2 - i32.eqz - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.eq - i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/util/string/strtob (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $1 - i32.const 8 - i32.gt_u - if (result i32) - loop $while-continue|0 - local.get $1 - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$4 (result i32) - local.get $0 + i32.shr_u + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.add - i32.const 2 + i32.store offset=4 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $8 + local.get $1 + i32.const 20 i32.sub - i32.load16_u - local.tee $3 - i32.const 5760 - i32.lt_u - if - local.get $3 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $3 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$4 - end + i32.load offset=16 i32.const 1 - local.get $3 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$4 - drop - block $break|0 - block $case6|0 - local.get $3 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 12288 - i32.eq - br_if $case6|0 + i32.shr_u + local.tee $4 + if + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + i32.const 1712 + i32.store + br $folding-inner4 + end + else + local.get $6 + i32.eqz + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $8 + local.get $6 + local.get $8 + i32.lt_s + select + local.tee $3 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 local.get $3 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + local.get $5 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $2 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$4 + br $folding-inner4 end + global.get $~lib/memory/__stack_pointer i32.const 0 - end - else - i32.const 0 - end - if - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|0 - end - end - local.get $1 - i32.const 8 - i32.gt_u - if (result i32) - loop $while-continue|1 - local.get $1 - local.get $2 - i32.gt_u - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$5 (result i32) + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=20 + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.add - i32.load16_u - local.tee $3 - i32.const 5760 - i32.lt_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $0 + local.get $1 + local.get $3 + call $~lib/string/String#indexOf + local.tee $9 + i32.const -1 + i32.xor if + local.get $9 local.get $3 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $3 - i32.const 9 i32.sub - i32.const 4 - i32.le_u - i32.or - br $__inlined_func$~lib/util/string/isSpace$5 - end - i32.const 1 - local.get $3 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$5 - drop - block $break|00 - block $case6|01 - local.get $3 - i32.const 5760 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 8232 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 8233 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 8239 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 8287 - i32.eq - br_if $case6|01 - local.get $3 - i32.const 12288 - i32.eq - br_if $case6|01 + local.tee $7 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.shl + local.tee $10 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=28 + local.get $7 + local.get $0 local.get $3 - i32.const 65279 - i32.eq - br_if $case6|01 - br $break|00 + i32.const 1 + i32.shl + i32.add + local.get $10 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=24 + local.get $2 + local.get $7 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push end + local.get $5 i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$5 - end - i32.const 0 - end - else + i32.add + local.tee $5 + local.get $8 + i32.eq + br_if $folding-inner3 + local.get $4 + local.get $9 + i32.add + local.set $3 + br $while-continue|1 + end + end + local.get $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner3 + end + local.get $6 + local.get $3 + i32.sub + local.tee $1 i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=32 + local.get $4 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $2 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push + end + br $folding-inner4 end - if - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $2 - i32.sub - else - local.get $1 + i32.const 0 + i32.const 5 + i32.const 0 + call $~lib/rt/__newArray + local.set $2 + br $folding-inner4 end - else - local.get $1 - end - i32.const 8 - i32.ne - if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $2 return end - local.get $0 - local.get $2 - i32.add - i64.load - i64.const 28429475166421108 - i64.eq global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -6172,331 +5377,61 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 2 local.get $0 + i32.const 65535 + i32.gt_u + local.tee $2 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 i32.store - block $folding-inner0 + local.get $2 + if local.get $0 - i32.const 20 + i32.const 1114111 + i32.gt_u + if + i32.const 0 + i32.const 1328 + i32.const 39 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 65536 i32.sub - i32.load offset=16 - i32.const 1 + local.tee $0 + i32.const 10 i32.shr_u - local.tee $2 - i32.eqz - br_if $folding-inner0 + i32.const 55296 + i32.or local.get $0 - i32.load16_u - local.set $3 - loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$6 (result i32) - local.get $3 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $3 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - local.get $3 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$6 - drop - i32.const 1 - local.get $3 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$6 - drop - block $break|0 - block $case6|0 - local.get $3 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $3 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$6 - end - i32.const 0 - end - if - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $3 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - f64.const 1 - local.set $4 - local.get $3 - i32.const 45 - i32.eq - local.tee $6 - local.get $3 - i32.const 43 - i32.eq + i32.const 1023 + i32.and + i32.const 56320 i32.or - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - br_if $folding-inner0 - f64.const -1 - f64.const 1 - local.get $6 - select - local.set $4 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $3 - end + i32.const 16 + i32.shl + i32.or + i32.store + else local.get $1 - if - local.get $1 - i32.const 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - br_if $folding-inner0 - local.get $1 - i32.const 16 - i32.eq - if - local.get $3 - i32.const 48 - i32.eq - local.get $2 - i32.const 2 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - i32.const 4 - i32.add - local.set $0 - end - end - else - local.get $3 - i32.const 48 - i32.eq - local.get $2 - i32.const 2 - i32.gt_s - i32.and - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $0 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $3 - i32.const 98 - i32.ne - if - local.get $3 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $3 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - end - end - local.get $1 - i32.const 10 - local.get $1 - select - local.set $1 - end - local.get $2 - i32.const 1 - i32.sub - local.set $7 - loop $while-continue|2 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - block $while-break|2 - local.get $0 - i32.load16_u - local.tee $6 - i32.const 48 - i32.sub - local.tee $3 - i32.const 10 - i32.ge_u - if - local.get $6 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - if (result i32) - local.get $6 - i32.const 55 - i32.sub - else - local.get $6 - i32.const 87 - i32.sub - local.get $6 - local.get $6 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - end - local.set $3 - end - local.get $1 - local.get $3 - i32.le_u - if - local.get $2 - local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 - end - local.get $5 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $3 - f64.convert_i32_u - f64.add - local.set $5 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - f64.mul - return + local.get $0 + i32.store16 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - f64.const nan:0x8000000000000 + local.get $1 ) - (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) + (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -6511,36 +5446,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/util/string/strtol + call $~lib/string/String.__lt + i32.eqz global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/strtod (param $0 i32) (result f64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i32) - (local $10 f64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i64) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -6555,814 +5480,438 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $folding-inner1 - block $folding-inner0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.eqz - br_if $folding-inner0 - local.get $0 - i32.load16_u - local.set $4 - f64.const 1 - local.set $10 - loop $while-continue|0 - local.get $5 - if (result i32) - block $__inlined_func$~lib/util/string/isSpace$7 (result i32) - local.get $4 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $4 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - local.get $4 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$7 - drop - i32.const 1 - local.get $4 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$7 - drop - block $break|0 - block $case6|0 - local.get $4 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $4 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$7 - end - i32.const 0 - end - else - i32.const 0 - end - if - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|0 - end - end - local.get $5 - i32.eqz - br_if $folding-inner0 - local.get $4 - i32.const 45 - i32.eq - if (result i32) - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String#concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 1 i32.sub - local.tee $5 - i32.eqz - br_if $folding-inner0 - f64.const -1 - local.set $10 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $4 - i32.const 43 - i32.eq - if (result i32) - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $folding-inner0 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $4 - end - end - local.tee $4 - i32.const 73 - i32.eq - local.get $5 - i32.const 8 - i32.ge_s - i32.and - if - local.get $0 - i64.load - i64.const 29555310648492105 - i64.eq - if (result i32) - local.get $0 - i64.load offset=8 - i64.const 34058970405077102 - i64.eq - else - i32.const 0 - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - f64.const inf - f64.mul - return - end - br $folding-inner0 - end - local.get $4 - i32.const 46 - i32.ne - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - i32.and - br_if $folding-inner0 - local.get $0 - local.set $3 - loop $while-continue|1 - local.get $4 - i32.const 48 - i32.eq - if - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end + br_table $0of1 $1of1 $outOfRange end - local.get $5 - i32.const 0 - i32.le_s - br_if $folding-inner1 - local.get $4 - i32.const 46 - i32.eq - if - local.get $0 - local.get $3 - i32.eq - local.set $3 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - i32.and - br_if $folding-inner0 - i32.const 1 - local.set $9 - loop $for-loop|2 - local.get $0 - i32.load16_u - local.tee $4 - i32.const 48 - i32.eq - if - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $5 - i32.const 0 - i32.le_s - br_if $folding-inner1 - local.get $3 + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $4 + local.get $3 + i32.sub + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.eqz - i32.and - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - i32.and - br_if $folding-inner0 + return end - local.get $4 - i32.const 48 + local.get $2 + i32.const 1 i32.sub - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 10 - i32.lt_u - local.tee $11 - local.get $9 - i32.eqz - local.get $4 - i32.const 46 - i32.eq - i32.and - i32.or - if - block $for-break3 - local.get $11 - if - local.get $1 - i32.const 19 - i32.lt_s - if (result i64) - local.get $3 - i64.extend_i32_u - local.get $6 - i64.const 10 - i64.mul - i64.add - else - local.get $6 - local.get $3 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.or - end - local.set $6 - local.get $1 - i32.const 1 - i32.add - local.set $1 - else - local.get $1 - local.set $2 - i32.const 1 - local.set $9 - end - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $for-break3 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.tee $4 - i32.const 48 - i32.sub - local.set $3 - br $for-loop|3 - end - end - end - block $~lib/util/string/scientific|inlined.0 - local.get $6 - i64.eqz - local.get $2 - local.get $1 - local.get $9 - select - i32.const 19 - local.get $1 - local.get $1 - i32.const 19 - i32.gt_s - select - i32.sub - block $~lib/util/string/parseExp|inlined.0 (result i32) - i32.const 1 - local.set $9 - i32.const 0 - local.set $4 - i32.const 0 - local.get $0 - i32.load16_u - i32.const 32 - i32.or - i32.const 101 - i32.ne - br_if $~lib/util/string/parseExp|inlined.0 - drop - i32.const 0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.tee $1 - i32.const 45 - i32.eq - if (result i32) - i32.const 0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - i32.const -1 - local.set $9 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $1 - i32.const 43 - i32.eq - if (result i32) - i32.const 0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $1 - end - end - local.set $3 - loop $while-continue|4 - local.get $3 - i32.const 48 - i32.eq - if - i32.const 0 - local.get $5 - i32.const 1 - i32.sub - local.tee $5 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $3 - br $while-continue|4 - end - end - local.get $3 - i32.const 48 - i32.sub - local.set $3 - loop $for-loop|5 - local.get $3 - i32.const 10 - i32.lt_u - i32.const 0 - local.get $5 - select - if - local.get $9 - i32.const 3200 - i32.mul - local.get $4 - i32.const 3200 - i32.ge_s - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $4 - i32.const 10 - i32.mul - local.get $3 - i32.add - local.set $4 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - i32.const 48 - i32.sub - local.set $3 - br $for-loop|5 - end - end - local.get $4 - local.get $9 - i32.mul - end - i32.add - local.tee $0 - i32.const -342 - i32.lt_s - i32.or - br_if $~lib/util/string/scientific|inlined.0 - f64.const inf - local.set $8 - local.get $0 - i32.const 308 - i32.gt_s - br_if $~lib/util/string/scientific|inlined.0 - local.get $6 - f64.convert_i64_u - local.set $8 - local.get $0 - i32.eqz - br_if $~lib/util/string/scientific|inlined.0 - local.get $0 - i32.const 37 - i32.le_s - local.get $0 - i32.const 22 - i32.gt_s - i32.and - if - local.get $8 - local.get $0 - i32.const 3 - i32.shl - i32.const 4496 - i32.add - f64.load - f64.mul - local.set $8 - i32.const 22 - local.set $0 - end - local.get $6 - i64.const 9007199254740991 - i64.le_u - if (result i32) - local.get $0 - i32.const 31 - i32.shr_s - local.tee $1 - local.get $0 - local.get $1 - i32.add - i32.xor - i32.const 22 - i32.le_s - else - i32.const 0 - end - if (result f64) - local.get $0 - i32.const 0 - i32.gt_s - if - local.get $8 - local.get $0 - i32.const 3 - i32.shl - i32.const 4672 - i32.add - f64.load - f64.mul - local.set $8 - br $~lib/util/string/scientific|inlined.0 - end - local.get $8 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.const 4672 - i32.add - f64.load - f64.div - else - local.get $0 - i32.const 0 - i32.lt_s - if (result f64) - local.get $6 - local.get $6 - i64.clz - local.tee $7 - i64.shl - local.set $6 - local.get $0 - i64.extend_i32_s - local.get $7 - i64.sub - local.set $7 - loop $for-loop|6 - local.get $0 - i32.const -14 - i32.le_s - if - local.get $6 - i64.const 6103515625 - i64.rem_u - local.get $6 - i64.const 6103515625 - i64.div_u - local.tee $6 - i64.clz - local.tee $12 - i64.const 18 - i64.sub - i64.shl - f64.convert_i64_u - f64.const 0.00004294967296 - f64.mul - f64.nearest - i64.trunc_sat_f64_u - local.get $6 - local.get $12 - i64.shl - i64.add - local.set $6 - local.get $7 - local.get $12 - i64.sub - local.set $7 - local.get $0 - i32.const 14 - i32.add - local.set $0 - br $for-loop|6 - end - end - local.get $6 - i32.const 0 - local.get $0 - i32.sub - call $~lib/math/ipow32 - i64.extend_i32_s - local.tee $13 - i64.div_u - local.tee $14 - i64.clz - local.set $12 - local.get $6 - local.get $13 - i64.rem_u - f64.convert_i64_u - i64.reinterpret_f64 - local.get $12 - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 - local.get $13 - f64.convert_i64_u - f64.div - i64.trunc_sat_f64_u - local.get $14 - local.get $12 - i64.shl - i64.add - f64.convert_i64_u - local.get $7 - local.get $12 - i64.sub - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - else - local.get $6 - local.get $6 - i64.ctz - local.tee $7 - i64.shr_u - local.set $6 - local.get $7 - local.get $0 - i64.extend_i32_s - i64.add - global.set $~lib/util/string/__fixmulShift - loop $for-loop|7 - local.get $0 - i32.const 13 - i32.ge_s - if - i64.const 32 - local.get $6 - i64.const 32 - i64.shr_u - i64.const 1220703125 - i64.mul - local.get $6 - i64.const 4294967295 - i64.and - i64.const 1220703125 - i64.mul - local.tee $6 - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.clz - i64.extend_i32_u - local.tee $12 - i64.sub - local.tee $13 - global.get $~lib/util/string/__fixmulShift - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $6 - local.get $12 - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - local.get $7 - local.get $12 - i64.shl - local.get $6 - i64.const 4294967295 - i64.and - local.get $13 - i64.shr_u - i64.or - i64.add - local.set $6 - local.get $0 - i32.const 13 - i32.sub - local.set $0 - br $for-loop|7 - end - end - local.get $0 - call $~lib/math/ipow32 - i64.extend_i32_u - local.tee $7 - local.get $6 - i64.const 4294967295 - i64.and - i64.mul - local.set $12 - i64.const 32 - local.get $6 - i64.const 32 - i64.shr_u - local.get $7 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.tee $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.clz - i64.extend_i32_u - local.tee $7 - i64.sub - local.tee $13 - global.get $~lib/util/string/__fixmulShift - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $12 - local.get $7 - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - local.get $6 - local.get $7 - i64.shl - local.get $12 - i64.const 4294967295 - i64.and - local.get $13 - i64.shr_u - i64.or - i64.add - f64.convert_i64_u - global.get $~lib/util/string/__fixmulShift - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - end - end - local.set $8 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $8 - local.get $10 - f64.copysign - return + local.set $2 + br $for-loop|0 end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + local.get $2 + i32.add + local.tee $4 + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - f64.const nan:0x8000000000000 + i32.const 1712 return end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $2 + memory.copy + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 - f64.const 0 - f64.mul + local.get $4 ) - (func $~lib/number/F64.parseFloat (param $0 i32) (result f64) - (local $1 f64) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7385,23 +5934,54 @@ local.get $0 i32.store local.get $0 - call $~lib/util/string/strtod + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/strtol (result i32) - (local $0 i32) + (func $~lib/util/string/strtod (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 4880 - local.set $2 + (local $6 i64) + (local $7 i64) + (local $8 f64) + (local $9 i32) + (local $10 f64) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7421,663 +6001,988 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4880 + local.get $0 i32.store - block $folding-inner0 - i32.const 4876 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $folding-inner0 - i32.const 4880 - i32.load16_u - local.set $1 - loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$8 (result i32) - local.get $1 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $1 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - local.get $1 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$8 - drop - i32.const 1 - local.get $1 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$8 - drop - block $break|0 - block $case6|0 - local.get $1 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 65279 + block $folding-inner1 + block $folding-inner0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.eqz + br_if $folding-inner0 + local.get $0 + i32.load16_u + local.set $4 + f64.const 1 + local.set $10 + loop $while-continue|0 + local.get $5 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$7 (result i32) + local.get $4 + i32.const 128 + i32.or + i32.const 160 i32.eq - br_if $case6|0 - br $break|0 + local.get $4 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $4 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$7 + drop + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$7 + drop + block $break|0 + block $case6|0 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$7 + end + i32.const 0 end + else + i32.const 0 + end + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $4 + local.get $5 i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$8 + i32.sub + local.set $5 + br $while-continue|0 end - i32.const 0 end - if - local.get $2 + local.get $5 + i32.eqz + br_if $folding-inner0 + local.get $4 + i32.const 45 + i32.eq + if (result i32) + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $folding-inner0 + f64.const -1 + local.set $10 + local.get $0 i32.const 2 i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $1 + else + local.get $4 + i32.const 43 + i32.eq + if (result i32) + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $folding-inner0 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $4 + end + end + local.tee $4 + i32.const 73 + i32.eq + local.get $5 + i32.const 8 + i32.ge_s + i32.and + if local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 + i64.load + i64.const 29555310648492105 + i64.eq + if (result i32) + local.get $0 + i64.load offset=8 + i64.const 34058970405077102 + i64.eq + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + f64.const inf + f64.mul + return + end + br $folding-inner0 end - end - i32.const 1 - local.set $4 - local.get $1 - i32.const 45 - i32.eq - local.tee $6 - local.get $1 - i32.const 43 - i32.eq - i32.or - if (result i32) - local.get $0 - i32.const 1 + local.get $4 + i32.const 46 + i32.ne + local.get $4 + i32.const 48 i32.sub - local.tee $0 - i32.eqz + i32.const 10 + i32.ge_u + i32.and br_if $folding-inner0 - i32.const -1 - i32.const 1 - local.get $6 - select - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.tee $2 - i32.load16_u - else - local.get $1 - end - i32.const 48 - i32.eq - local.get $0 - i32.const 2 - i32.gt_s - i32.and - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $2 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $1 - i32.const 98 - i32.ne + local.get $0 + local.set $3 + loop $while-continue|1 + local.get $4 + i32.const 48 + i32.eq + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + local.get $5 + i32.const 0 + i32.le_s + br_if $folding-inner1 + local.get $4 + i32.const 46 + i32.eq + if + local.get $0 + local.get $3 + i32.eq + local.set $3 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $3 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + i32.and + br_if $folding-inner0 + i32.const 1 + local.set $9 + loop $for-loop|2 + local.get $0 + i32.load16_u + local.tee $4 + i32.const 48 + i32.eq + if + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $for-loop|2 + end + end + local.get $5 + i32.const 0 + i32.le_s + br_if $folding-inner1 + local.get $3 + local.get $1 + i32.eqz + i32.and + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + i32.and + br_if $folding-inner0 + end + local.get $4 + i32.const 48 + i32.sub + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 10 + i32.lt_u + local.tee $11 + local.get $9 + i32.eqz + local.get $4 + i32.const 46 + i32.eq + i32.and + i32.or + if + block $for-break3 + local.get $11 if - local.get $1 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 + local.get $2 + i32.const 19 + i32.lt_s + if (result i64) + local.get $3 + i64.extend_i32_u + local.get $6 + i64.const 10 + i64.mul + i64.add + else + local.get $6 + local.get $3 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.or + end + local.set $6 + local.get $2 + i32.const 1 + i32.add + local.set $2 + else + local.get $2 + local.set $1 + i32.const 1 + local.set $9 end - local.get $2 - i32.const 4 - i32.add - local.set $2 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $for-break3 local.get $0 i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.tee $4 + i32.const 48 i32.sub - local.set $0 - i32.const 2 local.set $3 - br $break|1 + br $for-loop|3 end - local.get $2 - i32.const 4 + end + end + local.get $1 + local.get $2 + local.get $9 + select + local.set $1 + i32.const 1 + local.set $9 + i32.const 0 + local.set $4 + block $~lib/util/string/scientific|inlined.0 + local.get $6 + i64.eqz + block $~lib/util/string/parseExp|inlined.0 (result i32) + i32.const 0 + local.get $0 + i32.load16_u + i32.const 32 + i32.or + i32.const 101 + i32.ne + br_if $~lib/util/string/parseExp|inlined.0 + drop + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 i32.add - local.set $2 + local.tee $0 + i32.load16_u + local.tee $3 + i32.const 45 + i32.eq + if (result i32) + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + i32.const -1 + local.set $9 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $3 + i32.const 43 + i32.eq + if (result i32) + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $3 + end + end + local.set $3 + loop $while-continue|4 + local.get $3 + i32.const 48 + i32.eq + if + i32.const 0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 + br $while-continue|4 + end + end + local.get $3 + i32.const 48 + i32.sub + local.set $3 + loop $for-loop|5 + local.get $3 + i32.const 10 + i32.lt_u + i32.const 0 + local.get $5 + select + if + local.get $9 + i32.const 3200 + i32.mul + local.get $4 + i32.const 3200 + i32.ge_s + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $4 + i32.const 10 + i32.mul + local.get $3 + i32.add + local.set $4 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + i32.const 48 + i32.sub + local.set $3 + br $for-loop|5 + end + end + local.get $4 + local.get $9 + i32.mul + end + local.get $1 + i32.const 19 + local.get $2 + local.get $2 + i32.const 19 + i32.gt_s + select + i32.sub + i32.add + local.tee $0 + i32.const -342 + i32.lt_s + i32.or + br_if $~lib/util/string/scientific|inlined.0 + f64.const inf + local.set $8 + local.get $0 + i32.const 308 + i32.gt_s + br_if $~lib/util/string/scientific|inlined.0 + local.get $6 + f64.convert_i64_u + local.set $8 + local.get $0 + i32.eqz + br_if $~lib/util/string/scientific|inlined.0 + local.get $0 + i32.const 37 + i32.le_s + local.get $0 + i32.const 22 + i32.gt_s + i32.and + if + local.get $8 local.get $0 - i32.const 2 - i32.sub + i32.const 3 + i32.shl + i32.const 4496 + i32.add + f64.load + f64.mul + local.set $8 + i32.const 22 local.set $0 - i32.const 8 - local.set $3 - br $break|1 end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $3 - end - end - local.get $3 - i32.const 10 - local.get $3 - select - local.set $6 - local.get $0 - i32.const 1 - i32.sub - local.set $7 - loop $while-continue|2 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - if - block $while-break|2 - local.get $2 - i32.load16_u - local.tee $3 - i32.const 48 - i32.sub + local.get $6 + i64.const 9007199254740991 + i64.le_u + if (result i32) + local.get $0 + i32.const 31 + i32.shr_s local.tee $1 - i32.const 10 - i32.ge_u + local.get $0 + local.get $1 + i32.add + i32.xor + i32.const 22 + i32.le_s + else + i32.const 0 + end + if (result f64) + local.get $0 + i32.const 0 + i32.gt_s if - local.get $3 - i32.const 65 + local.get $8 + local.get $0 + i32.const 3 + i32.shl + i32.const 4672 + i32.add + f64.load + f64.mul + local.set $8 + br $~lib/util/string/scientific|inlined.0 + end + local.get $8 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.const 4672 + i32.add + f64.load + f64.div + else + local.get $0 + i32.const 0 + i32.lt_s + if (result f64) + local.get $6 + local.get $6 + i64.clz + local.tee $7 + i64.shl + local.set $6 + local.get $0 + i64.extend_i32_s + local.get $7 + i64.sub + local.set $7 + loop $for-loop|6 + local.get $0 + i32.const -14 + i32.le_s + if + local.get $6 + i64.const 6103515625 + i64.rem_u + local.get $6 + i64.const 6103515625 + i64.div_u + local.tee $6 + i64.clz + local.tee $12 + i64.const 18 + i64.sub + i64.shl + f64.convert_i64_u + f64.const 0.00004294967296 + f64.mul + f64.nearest + i64.trunc_sat_f64_u + local.get $6 + local.get $12 + i64.shl + i64.add + local.set $6 + local.get $7 + local.get $12 + i64.sub + local.set $7 + local.get $0 + i32.const 14 + i32.add + local.set $0 + br $for-loop|6 + end + end + local.get $6 + i32.const 0 + local.get $0 i32.sub - i32.const 25 - i32.le_u - if (result i32) - local.get $3 - i32.const 55 - i32.sub - else - local.get $3 - i32.const 87 - i32.sub - local.get $3 - local.get $3 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select + call $~lib/math/ipow32 + i64.extend_i32_s + local.tee $13 + i64.div_u + local.tee $14 + i64.clz + local.set $12 + local.get $6 + local.get $13 + i64.rem_u + f64.convert_i64_u + i64.reinterpret_f64 + local.get $12 + i64.const 52 + i64.shl + i64.add + f64.reinterpret_i64 + local.get $13 + f64.convert_i64_u + f64.div + i64.trunc_sat_f64_u + local.get $14 + local.get $12 + i64.shl + i64.add + f64.convert_i64_u + local.get $7 + local.get $12 + i64.sub + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + else + local.get $6 + local.get $6 + i64.ctz + local.tee $7 + i64.shr_u + local.set $6 + local.get $7 + local.get $0 + i64.extend_i32_s + i64.add + global.set $~lib/util/string/__fixmulShift + loop $for-loop|7 + local.get $0 + i32.const 13 + i32.ge_s + if + i64.const 32 + local.get $6 + i64.const 32 + i64.shr_u + i64.const 1220703125 + i64.mul + local.get $6 + i64.const 4294967295 + i64.and + i64.const 1220703125 + i64.mul + local.tee $6 + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.clz + i64.extend_i32_u + local.tee $12 + i64.sub + local.tee $13 + global.get $~lib/util/string/__fixmulShift + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $6 + local.get $12 + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + local.get $7 + local.get $12 + i64.shl + local.get $6 + i64.const 4294967295 + i64.and + local.get $13 + i64.shr_u + i64.or + i64.add + local.set $6 + local.get $0 + i32.const 13 + i32.sub + local.set $0 + br $for-loop|7 + end end - local.set $1 - end - local.get $1 - local.get $6 - i32.ge_u - if local.get $0 + call $~lib/math/ipow32 + i64.extend_i32_u + local.tee $7 + local.get $6 + i64.const 4294967295 + i64.and + i64.mul + local.set $12 + i64.const 32 local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 + local.get $6 + i64.const 32 + i64.shr_u + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.tee $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.clz + i64.extend_i32_u + local.tee $7 + i64.sub + local.tee $13 + global.get $~lib/util/string/__fixmulShift + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $12 + local.get $7 + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + local.get $6 + local.get $7 + i64.shl + local.get $12 + i64.const 4294967295 + i64.and + local.get $13 + i64.shr_u + i64.or + i64.add + f64.convert_i64_u + global.get $~lib/util/string/__fixmulShift + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn end - local.get $5 - local.get $6 - i32.mul - local.get $1 - i32.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|2 end + local.set $8 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + local.get $10 + f64.copysign + return end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.mul + f64.const nan:0x8000000000000 return end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $10 + f64.const 0 + f64.mul ) - (func $~lib/util/string/strtol (result i64) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) (local $4 i64) (local $5 i64) - (local $6 i32) - (local $7 i32) - i32.const 4928 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4928 - i32.store - block $folding-inner0 - i32.const 4924 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $folding-inner0 - i32.const 4928 - i32.load16_u - local.set $1 - loop $while-continue|0 - block $__inlined_func$~lib/util/string/isSpace$9 (result i32) - local.get $1 - i32.const 128 - i32.or - i32.const 160 - i32.eq - local.get $1 - i32.const 9 - i32.sub - i32.const 4 - i32.le_u - i32.or - local.get $1 - i32.const 5760 - i32.lt_u - br_if $__inlined_func$~lib/util/string/isSpace$9 - drop - i32.const 1 - local.get $1 - i32.const -8192 - i32.add - i32.const 10 - i32.le_u - br_if $__inlined_func$~lib/util/string/isSpace$9 - drop - block $break|0 - block $case6|0 - local.get $1 - i32.const 5760 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8232 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8233 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8239 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8287 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 12288 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 65279 - i32.eq - br_if $case6|0 - br $break|0 - end - i32.const 1 - br $__inlined_func$~lib/util/string/isSpace$9 - end - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.add - local.tee $2 - i32.load16_u - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - i64.const 1 - local.set $4 - local.get $1 - i32.const 45 - i32.eq - local.tee $6 - local.get $1 - i32.const 43 - i32.eq - i32.or - if (result i32) + local.get $3 + i64.extend_i32_s + local.set $5 + local.get $3 + local.get $3 + i32.const 1 + i32.sub + i32.and + if + loop $do-loop|1 local.get $0 + local.get $2 i32.const 1 i32.sub - local.tee $0 - i32.eqz - br_if $folding-inner0 - i64.const -1 - i64.const 1 - local.get $6 - select - local.set $4 - local.get $2 - i32.const 2 - i32.add local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + local.get $5 + i64.div_u + local.tee $1 + local.get $5 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.const 17696 + i32.add i32.load16_u - else + i32.store16 local.get $1 + i64.const 0 + i64.ne + br_if $do-loop|1 end - i32.const 48 - i32.eq - local.get $0 - i32.const 2 - i32.gt_s - i32.and - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $2 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $1 - i32.const 98 - i32.ne - if - local.get $1 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 2 - local.set $3 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 8 - local.set $3 - br $break|1 - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $3 - end - end - local.get $3 - i32.const 10 + else local.get $3 - select - local.set $6 - local.get $0 - i32.const 1 - i32.sub - local.set $7 - loop $while-continue|2 + i32.ctz + i32.const 7 + i32.and + i64.extend_i32_s + local.set $4 + local.get $5 + i64.const 1 + i64.sub + local.set $5 + loop $do-loop|0 local.get $0 - local.tee $1 + local.get $2 i32.const 1 i32.sub - local.set $0 + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 - if - block $while-break|2 - local.get $2 - i32.load16_u - local.tee $3 - i32.const 48 - i32.sub - local.tee $1 - i32.const 10 - i32.ge_u - if - local.get $3 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - if (result i32) - local.get $3 - i32.const 55 - i32.sub - else - local.get $3 - i32.const 87 - i32.sub - local.get $3 - local.get $3 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - end - local.set $1 - end - local.get $1 - local.get $6 - i32.ge_u - if - local.get $0 - local.get $7 - i32.eq - br_if $folding-inner0 - br $while-break|2 - end - local.get $1 - i64.extend_i32_u - local.get $5 - local.get $6 - i64.extend_i32_s - i64.mul - i64.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|2 - end - end + local.get $5 + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.const 17696 + i32.add + i32.load16_u + i32.store16 + local.get $1 + local.get $4 + i64.shr_u + local.tee $1 + i64.const 0 + i64.ne + br_if $do-loop|0 + end + end + ) + (func $~lib/util/number/dtoa (param $0 f32) (result i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 23280 + local.set $2 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $0 + f64.promote_f32 + local.tee $1 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne + if + i32.const 7696 + local.set $2 + local.get $1 + local.get $1 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 8960 + i32.const 23312 + local.get $1 + f64.const 0 + f64.lt + select + local.set $2 + br $~lib/util/number/dtoa_impl|inlined.1 end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i64.mul - return + local.get $1 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $3 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 23344 + local.get $3 + memory.copy end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i64.const 0 - ) - (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $3 local.get $2 - i32.add - local.tee $4 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return + ) + (func $~lib/string/String.fromCharCode@varargs (param $0 i32) (result i32) + (local $1 i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const -1 + local.set $1 end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 local.get $0 - local.get $2 - memory.copy - local.get $2 - local.get $4 - i32.add local.get $1 - local.get $3 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 + call $~lib/string/String.fromCharCode ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__not (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8092,23 +6997,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 - local.get $1 - call $~lib/string/String#concat + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + else + i32.const 0 + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.eqz ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lte (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8135,272 +7046,628 @@ i32.store offset=4 local.get $0 local.get $1 - call $~lib/string/String.__eq + call $~lib/string/String.__gt i32.eqz global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 59404 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.gt_s - local.get $2 - local.get $3 - i32.gt_s - local.get $0 - select - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - i32.eqz - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 59404 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 59404 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1648 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace i32.store offset=4 - local.get $0 - i32.const 0 - local.get $1 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.gt_s - local.tee $0 - select - call $~lib/util/string/compareImpl - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 i32.const 0 - i32.lt_s - local.get $0 - local.get $1 - select - return + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + local.get $3 + i32.load offset=16 + local.tee $0 local.get $0 local.get $1 - call $~lib/string/String.__lt - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.gt_u + select + memory.copy + local.get $2 ) - (func $~lib/string/String.__lte (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + (func $~lib/util/number/dtoa_core (param $0 f64) (param $1 i32) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + local.get $0 + f64.const 0 + f64.lt + local.tee $3 if - i32.const 59424 - i32.const 59472 + i32.const 23344 + i32.const 45 + i32.store16 + local.get $0 + f64.neg + local.set $0 + end + local.get $1 + if (result i32) + local.get $0 + f32.demote_f64 + i32.reinterpret_f32 + local.tee $5 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.set $9 + local.get $5 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add + local.set $2 + local.get $9 i32.const 1 + local.get $9 + select + i32.const 150 + i32.sub + else + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $5 + local.get $2 + i64.const 4503599627370495 + i64.and + local.get $5 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.set $2 + local.get $5 i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $5 + select + i32.const 1075 + i32.sub end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + local.tee $9 + i32.const 1 + i32.sub + local.get $2 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $4 + i64.clz + i32.wrap_i64 + local.tee $10 + i32.sub + local.set $5 + local.get $4 + local.get $10 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $2 + local.get $2 + i64.const 8388608 + i64.const 4503599627370496 + local.get $1 + select + i64.eq + i32.const 1 + i32.add + local.tee $1 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $9 + local.get $1 + i32.sub + local.get $5 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $5 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $0 + i32.trunc_sat_f64_s + local.tee $1 local.get $1 - i32.store offset=4 + f64.convert_i32_s local.get $0 + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 3 + i32.shl + local.tee $5 + i32.sub + global.set $~lib/util/number/_K + local.get $5 + i32.const 23400 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow local.get $1 - call $~lib/string/String.__gt - i32.eqz - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 + i32.shl + i32.const 24096 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $2 + local.get $2 + i64.clz + i64.shl + local.tee $2 + i64.const 4294967295 + i64.and + local.set $6 + global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + local.get $2 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $6 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_plus + local.tee $4 + i64.const 4294967295 + i64.and + local.set $13 + local.get $4 + i64.const 32 + i64.shr_u + local.tee $4 + local.get $12 + i64.mul + local.get $12 + local.get $13 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $8 + global.get $~lib/util/number/_frc_minus + local.tee $14 + i64.const 4294967295 + i64.and + local.set $15 + local.get $14 + i64.const 32 + i64.shr_u + local.tee $14 + local.get $12 + i64.mul + local.get $12 + local.get $15 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $3 + i32.const 1 + i32.shl + i32.const 23344 + i32.add + local.get $2 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $2 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $4 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $13 + i64.mul + local.get $8 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $4 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $2 + local.get $14 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $15 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $3 + call $~lib/util/number/genDigits + local.get $3 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCodes (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8409,121 +7676,74 @@ i32.const 26636 i32.lt_s if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $4 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s - i64.mul - i64.const 268435456 - i64.gt_u - end - if - i32.const 14064 - i32.const 1328 - i32.const 334 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.eqz - local.get $1 - i32.eqz - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return - end - local.get $1 - i32.const 1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $4 - i32.mul i32.const 1 i32.shl i32.const 2 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $4 - i32.const 1 - i32.shl - local.tee $4 - local.get $1 - i32.mul - local.set $1 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 local.get $1 - local.get $2 - i32.gt_u + i32.lt_s if local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add local.get $3 + local.get $0 + i32.const 2 + i32.shl i32.add + i32.load + i32.store16 local.get $0 - local.get $4 - memory.copy - local.get $2 - local.get $4 + i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $0 + br $for-loop|0 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 ) - (func $~lib/string/String#replace (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#trimStart (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8541,156 +7761,145 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.le_u - if - local.get $3 - local.get $4 - i32.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - local.set $0 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/string/String#indexOf - local.tee $1 - i32.const -1 - i32.xor - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + i32.const -2 + i32.and + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - local.get $4 - local.get $3 - i32.sub - local.tee $6 - i32.add - local.tee $4 - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=8 - local.get $4 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - local.tee $7 - memory.copy - local.get $4 - local.get $7 - i32.add - local.get $2 - local.get $5 - i32.const 1 - i32.shl - memory.copy - local.get $4 - local.get $1 - local.get $5 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - local.get $3 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $6 + i32.lt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace (result i32) + local.get $0 + local.get $1 + i32.add + i32.load16_u + local.tee $3 + i32.const 5760 + i32.lt_u + if + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace + drop + block $break|0 + block $case6|0 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace + end + i32.const 0 + end + else + i32.const 0 + end + if local.get $1 - i32.sub - i32.const 1 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return + local.set $1 + br $while-continue|0 end end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) - (func $~lib/string/String#replaceAll (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#trimEnd (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -8705,9 +7914,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -8715,807 +7923,1197 @@ i32.const 20 i32.sub i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $folding-inner1 + i32.const -2 + i32.and + local.tee $3 + local.set $1 + loop $while-continue|0 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $8 - local.get $3 - i32.ge_u - if - local.get $3 - local.get $8 - i32.ge_u - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $2 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$1 (result i32) local.get $0 local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - local.set $0 - end - br $folding-inner1 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - block $folding-inner0 - local.get $8 - i32.eqz - if - local.get $4 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $3 - i32.const 1 i32.add - local.get $4 - i32.mul - i32.add - i32.const 1 - i32.shl i32.const 2 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=8 - local.get $11 - local.get $2 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $4 - local.set $1 - loop $for-loop|0 - local.get $3 - local.get $5 - i32.gt_u - if - local.get $11 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $11 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.sub + i32.load16_u + local.tee $2 + i32.const 5760 + i32.lt_u + if + local.get $2 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $2 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$1 end - br $folding-inner0 - end - local.get $4 - local.get $8 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 - i32.shl - local.tee $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=12 - local.get $11 - local.get $0 - local.get $3 - memory.copy - loop $while-continue|1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - local.get $10 - call $~lib/string/String#indexOf - local.tee $3 - i32.const -1 - i32.xor - if - local.get $11 - local.get $3 - i32.const 1 - i32.shl - i32.add + local.get $2 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$1 + drop + block $break|0 + block $case6|0 local.get $2 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $3 - local.get $8 - i32.add - local.set $10 - br $while-continue|1 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $2 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$1 end - br $folding-inner0 + i32.const 0 end - local.get $3 - local.set $5 - loop $while-continue|2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $1 + local.get $3 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#trim (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.shl + local.set $1 + loop $while-continue|0 + local.get $1 + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$2 (result i32) local.get $0 local.get $1 - local.get $10 - call $~lib/string/String#indexOf - local.tee $7 - i32.const -1 - i32.xor + i32.add + i32.const 2 + i32.sub + i32.load16_u + local.tee $4 + i32.const 5760 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $11 - i32.store - local.get $11 - call $~lib/string/String.__not - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $11 - i32.store offset=16 - end - local.get $7 - local.get $10 - i32.sub - local.tee $6 - local.get $9 - i32.add local.get $4 - i32.add - local.get $5 - i32.gt_u - if - global.get $~lib/memory/__stack_pointer - local.get $11 - local.get $5 - i32.const 1 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - local.tee $11 - i32.store offset=16 - end - local.get $11 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 1 - i32.shl - memory.copy - local.get $11 - local.get $6 - local.get $9 - i32.add - local.tee $6 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $4 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$2 + end + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$2 + drop + block $break|0 + block $case6|0 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end i32.const 1 - i32.shl - i32.add - local.get $2 + br $__inlined_func$~lib/util/string/isSpace$2 + end + i32.const 0 + end + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $1 + local.get $2 + i32.gt_u + if (result i32) + block $__inlined_func$~lib/util/string/isSpace$3 (result i32) + local.get $0 + local.get $2 + i32.add + i32.load16_u + local.tee $4 + i32.const 5760 + i32.lt_u + if local.get $4 - i32.const 1 - i32.shl - memory.copy + i32.const 128 + i32.or + i32.const 160 + i32.eq local.get $4 - local.get $6 - i32.add - local.set $9 - local.get $7 - local.get $8 - i32.add - local.set $10 - br $while-continue|2 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + br $__inlined_func$~lib/util/string/isSpace$3 + end + i32.const 1 + local.get $4 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$3 + drop + block $break|00 + block $case6|01 + local.get $4 + i32.const 5760 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8232 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8233 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8239 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 8287 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 12288 + i32.eq + br_if $case6|01 + local.get $4 + i32.const 65279 + i32.eq + br_if $case6|01 + br $break|00 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$3 end + i32.const 0 end - local.get $11 - if - local.get $3 - local.get $10 + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|1 + end + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return + end + local.get $2 + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.eq + i32.and + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#substring@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#substring + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substr@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#substr + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#slice@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 i32.sub - local.tee $1 - local.get $9 - i32.add - local.get $5 - i32.gt_u - if - global.get $~lib/memory/__stack_pointer - local.get $11 - local.get $5 - i32.const 1 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - local.tee $11 - i32.store offset=16 - end - local.get $1 - if - local.get $11 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 1 - i32.shl - memory.copy - end - local.get $1 - local.get $9 - i32.add - local.tee $0 - local.get $5 - i32.lt_u - if - global.get $~lib/memory/__stack_pointer - local.get $11 - local.get $0 - i32.const 1 - i32.shl - call $~lib/rt/itcms/__renew - local.tee $11 - i32.store offset=16 - end - br $folding-inner0 + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 2147483647 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/string/String#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1264 + i32.const 1328 + i32.const 57 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1648 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store end - br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $11 - return end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1648 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + local.get $1 + i32.load + local.tee $3 i32.const 1 - i32.shr_u - local.set $3 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 0 - i32.lt_s - if (result i32) + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 local.get $3 + i32.const 4 i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - local.get $3 + i32.const 4 + i32.add local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 + i32.load + i32.const -4 + i32.and i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select + local.tee $4 + i32.load + local.set $2 end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - i32.le_s + local.get $3 + i32.const 2 + i32.and if - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - global.get $~lib/memory/__stack_pointer + local.get $4 local.get $2 - i32.const 1 - i32.shl - local.tee $2 i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.or + i32.store local.get $3 - ) - (func $~lib/string/String#slice@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1648 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 2147483647 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $4 local.get $1 - local.get $2 - call $~lib/string/String#slice - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + local.get $2 + i32.add + i32.ne if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1648 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 + i32.const 4 + i32.sub + local.get $1 i32.store local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - local.get $1 - local.get $3 - i32.add - local.tee $1 i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.set $1 + i32.const 1648 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.sub - local.tee $3 + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 + i32.add + i32.const 2 i32.shl - local.tee $2 + i32.add + i32.load offset=96 + local.set $3 + local.get $1 i32.const 0 - i32.le_s + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 + i32.shl + i32.add local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 i32.shl i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/string/String#substr@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + block $__inlined_func$~lib/rt/itcms/Object#unlink$287 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 59404 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$287 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort unreachable end - i32.const 2147483647 - local.set $2 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#substr - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 26608 + i32.load + i32.gt_u + if + i32.const 1264 + i32.const 1568 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 26612 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 - i32.gt_s select - local.tee $3 local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 + i32.or + i32.store offset=4 + local.get $0 local.get $1 + i32.store offset=8 local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $4 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - local.get $4 - i32.sub - local.tee $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1712 - return - end - local.get $4 - i32.eqz - local.get $2 + local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.eq + i32.load offset=4 + i32.const 3 i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 - local.get $4 - i32.add - local.get $3 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 + i32.store offset=8 ) - (func $~lib/string/String#substring@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 + (local $3 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - br_table $0of1 $1of1 $outOfRange + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner1 end unreachable end - i32.const 2147483647 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/string/String#substring - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if i32.const 59424 i32.const 59472 i32.const 1 @@ -9524,88 +9122,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 local.get $0 - i32.load offset=8 - local.tee $3 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 14064 - i32.const 15664 - i32.const 19 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.tee $2 - i32.const 1073741820 - local.get $3 - i32.const 1 - i32.shl - local.tee $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.const 8 - local.get $1 - local.get $1 - i32.const 8 - i32.le_u - select - i32.const 2 - i32.shl - local.tee $1 - local.get $1 - local.get $3 - i32.lt_u - select - local.tee $1 - call $~lib/rt/itcms/__renew - local.tee $3 - local.get $2 - i32.ne - if - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $1 - i32.store offset=8 - end + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) + (func $~lib/util/string/strtol (result i64) + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + i32.const 4928 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9625,401 +9162,677 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4928 i32.store - local.get $0 - local.get $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 36 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner4 - block $folding-inner3 - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 36 - memory.fill - local.get $2 - i32.eqz - br_if $folding-inner1 - local.get $1 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + block $folding-inner0 + i32.const 4924 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const 4928 + i32.load16_u + local.set $1 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$9 (result i32) + local.get $1 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $1 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $1 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$9 + drop + i32.const 1 + local.get $1 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$9 + drop + block $break|0 + block $case6|0 + local.get $1 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$9 + end + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + i64.const 1 + local.set $4 + local.get $1 + i32.const 45 + i32.eq + local.tee $6 + local.get $1 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + i32.eqz + br_if $folding-inner0 + i64.const -1 + i64.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $1 + end + i32.const 48 + i32.eq + local.get $0 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 local.get $2 - i32.load offset=12 - i32.eqz + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $1 + i32.const 98 + i32.ne if - local.get $2 - i32.const 1 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.const 1 - i32.store offset=12 + local.get $1 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $1 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store local.get $2 - i32.load offset=4 - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner4 + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 2 + local.set $3 + br $break|1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - i32.const 2147483647 local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $8 - local.get $1 - i32.const 20 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - if - local.get $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - i32.const 1712 - i32.store - br $folding-inner4 - end - else - local.get $6 - i32.eqz - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $8 - local.get $6 - local.get $8 - i32.lt_s - select - local.tee $3 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 + local.set $0 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 16 + local.set $3 + end + end + local.get $3 + i32.const 10 + local.get $3 + select + local.set $6 + local.get $0 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 + i32.sub + local.tee $1 + i32.const 10 + i32.ge_u + if + local.get $3 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=12 - local.get $5 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $2 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select end - br $folding-inner4 + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.tee $2 - i32.store offset=20 - loop $while-continue|1 - global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $6 + i32.ge_u + if local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $1 + i64.extend_i32_u + local.get $5 + local.get $6 + i64.extend_i32_s + i64.mul + i64.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + i64.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 0 + ) + (func $~lib/util/string/strtol (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 4880 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + block $folding-inner0 + i32.const 4876 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const 4880 + i32.load16_u + local.set $1 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$8 (result i32) + local.get $1 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $1 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $1 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$8 + drop + i32.const 1 + local.get $1 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$8 + drop + block $break|0 + block $case6|0 local.get $1 - i32.store offset=24 - local.get $0 + i32.const 5760 + i32.eq + br_if $case6|0 local.get $1 - local.get $3 - call $~lib/string/String#indexOf - local.tee $9 - i32.const -1 - i32.xor + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$8 + end + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + i32.const 1 + local.set $4 + local.get $1 + i32.const 45 + i32.eq + local.tee $6 + local.get $1 + i32.const 43 + i32.eq + i32.or + if (result i32) + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + i32.eqz + br_if $folding-inner0 + i32.const -1 + i32.const 1 + local.get $6 + select + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + else + local.get $1 + end + i32.const 48 + i32.eq + local.get $0 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $2 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $1 + i32.const 98 + i32.ne if - local.get $9 - local.get $3 - i32.sub - local.tee $7 - i32.const 0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.shl - local.tee $10 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=28 - local.get $7 - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $10 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=24 - local.get $2 - local.get $7 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1712 - call $~lib/array/Array<~lib/string/String>#push - end - local.get $5 - i32.const 1 - i32.add - local.tee $5 - local.get $8 + local.get $1 + i32.const 111 i32.eq - br_if $folding-inner3 - local.get $4 - local.get $9 - i32.add - local.set $3 - br $while-continue|1 + br_if $case1|1 + local.get $1 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 end - end - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=24 local.get $2 + i32.const 4 + i32.add + local.set $2 local.get $0 - call $~lib/array/Array<~lib/string/String>#push - br $folding-inner3 + i32.const 2 + i32.sub + local.set $0 + i32.const 2 + local.set $3 + br $break|1 end - local.get $6 - local.get $3 + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 8 + local.set $3 + br $break|1 + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 2 + i32.sub + local.set $0 + i32.const 16 + local.set $3 + end + end + local.get $3 + i32.const 10 + local.get $3 + select + local.set $6 + local.get $0 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + if + block $while-break|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 i32.sub local.tee $1 - i32.const 0 - i32.gt_s + i32.const 10 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=32 - local.get $4 - local.get $0 local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=24 - local.get $2 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1712 - call $~lib/array/Array<~lib/string/String>#push + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $3 + i32.const 55 + i32.sub + else + local.get $3 + i32.const 87 + i32.sub + local.get $3 + local.get $3 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $1 end - br $folding-inner4 + local.get $1 + local.get $6 + i32.ge_u + if + local.get $0 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $6 + i32.mul + local.get $1 + i32.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|2 end - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 0 - i32.const 5 - i32.const 0 - call $~lib/rt/__newArray - local.set $2 - br $folding-inner4 end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 + local.get $5 + i32.mul return end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + if + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 16220 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $0 + local.get $1 + i32.wrap_i64 local.get $2 + call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/string/String#split@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10034,39 +9847,36 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const 2147483647 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer + i32.const 2 local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 + i32.const 0 + i32.gt_s + local.tee $3 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 - call $~lib/string/String#split + local.get $0 + i32.store16 + local.get $3 + if + local.get $2 + local.get $1 + i32.store16 offset=2 + end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -10090,1088 +9900,2129 @@ i32.store local.get $1 local.get $0 - i32.load offset=12 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ge_u if - i32.const 1264 - i32.const 15664 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1712 + return end global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - i32.eqz - if - i32.const 15712 - i32.const 15664 - i32.const 118 - i32.const 40 - call $~lib/builtins/abort - unreachable - end + i32.load16_u + i32.store16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 ) - (func $start:std/string - (local $0 i32) - (local $1 f64) - (local $2 f32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 76 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 76 - memory.fill - global.get $std/string/str - i32.const 1056 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.const 1168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1200 - i32.const 1200 - call $~lib/string/String.__eq - i32.eqz + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 1120 - i32.const 11 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1232 - i32.const 1232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 12 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - local.get $0 - i32.const 20 + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 i32.sub - i32.load offset=16 - i32.const 1 i32.shr_u i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.store - block $__inlined_func$~lib/string/String#charCodeAt$294 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $0 - br $__inlined_func$~lib/string/String#charCodeAt$294 + i32.const 0 + i32.const 1648 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load16_u - local.set $0 - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.ctz + local.get $1 i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 15 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - block $__inlined_func$~lib/string/String#codePointAt$295 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 1 - i32.le_u - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $0 - br $__inlined_func$~lib/string/String#codePointAt$295 - end - local.get $0 i32.const 2 - i32.eq - local.get $4 - i32.load16_u offset=2 - local.tee $0 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - i32.or - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#codePointAt$295 - end - local.get $4 - i32.load16_u offset=4 - local.tee $4 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/string/String#codePointAt$295 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 59408 + i32.const 0 + i32.store + i32.const 60976 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.const 10 + i32.const 2 i32.shl - local.get $4 + i32.const 59408 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 59408 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 i32.add - i32.const 56613888 - i32.sub local.set $0 + br $for-loop|0 end - local.get $0 - i32.const 105 - i32.ne + end + i32.const 59408 + i32.const 60980 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 59408 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1648 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u if i32.const 0 - i32.const 1120 + i32.const 1648 + i32.const 389 i32.const 16 - i32.const 1 call $~lib/builtins/abort unreachable end - memory.size + local.get $3 + local.get $1 i32.const 16 - i32.shl - i32.const 59404 i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1492 - i32.const 1488 - i32.store - i32.const 1496 - i32.const 1488 - i32.store - i32.const 1488 - global.set $~lib/rt/itcms/pinSpace - i32.const 1524 - i32.const 1520 - i32.store - i32.const 1528 - i32.const 1520 - i32.store - i32.const 1520 - global.set $~lib/rt/itcms/toSpace - i32.const 1604 - i32.const 1600 - i32.store - i32.const 1608 - i32.const 1600 - i32.store - i32.const 1600 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 15 - call $~lib/string/String#at - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 15 - call $~lib/string/String#charAt - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $0 - local.get $4 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 17 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const -1 - call $~lib/string/String#at - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $std/string/str local.tee $5 - i32.store offset=12 - local.get $4 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - call $~lib/string/String#charAt - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $0 - local.get $4 - call $~lib/string/String.__eq - i32.eqz + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=8 - local.get $0 - i32.const 0 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.sub - call $~lib/string/String#at - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else local.get $0 - i32.const 1744 - call $~lib/string/String.__eq - i32.eqz + i32.const 1572 + i32.add + local.get $1 + i32.gt_u if i32.const 0 - i32.const 1120 - i32.const 19 - i32.const 1 + i32.const 1648 + i32.const 402 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1712 - call $~lib/string/String.__not - i32.eqz + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $std/string/str + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1264 + call $~lib/rt/itcms/__visit + i32.const 14064 + call $~lib/rt/itcms/__visit + i32.const 15712 + call $~lib/rt/itcms/__visit + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 16640 + call $~lib/rt/itcms/__visit + i32.const 17696 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne if - i32.const 0 - i32.const 1120 - i32.const 21 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - i32.const 1776 - call $~lib/string/String.__not + end + ) + (func $~lib/math/ipow32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + i32.const 5 + local.set $1 + i32.const 1 + local.set $2 + local.get $0 + i32.const 0 + i32.le_s + if + local.get $0 + i32.eqz + return + else + local.get $0 + i32.const 1 + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 22 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 5 + return + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 25 + return + else + local.get $0 + i32.const 32 + i32.lt_s + if + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + i32.const 31 + local.get $0 + i32.clz + i32.sub + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + i32.const 5 + i32.const 1 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + i32.const 25 + local.set $1 + end + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + local.get $1 + local.get $1 + i32.mul + local.set $1 + end + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + local.get $1 + local.get $1 + i32.mul + local.set $1 + end + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + local.get $1 + local.get $1 + i32.mul + local.set $1 + end + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 + i32.const 1 + i32.and + select + local.set $2 + end + local.get $2 + return + end + end end - i32.const 1808 - call $~lib/string/String.__not + end + loop $while-continue|1 + local.get $0 if - i32.const 0 - i32.const 1120 - i32.const 23 + local.get $1 + local.get $2 + i32.mul + local.get $2 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.and + select + local.set $2 + local.get $0 + i32.const 1 + i32.shr_u + local.set $0 + local.get $1 + local.get $1 + i32.mul + local.set $1 + br $while-continue|1 end - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + end + local.get $2 + ) + (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) + local.get $1 + i32.const 1023 + i32.gt_s + if (result f64) local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz + f64.const 8988465674311579538646525e283 + f64.mul + local.set $0 + local.get $1 + i32.const 1023 + i32.sub + local.tee $1 + i32.const 1023 + i32.gt_s + if (result f64) + i32.const 1023 + local.get $1 + i32.const 1023 + i32.sub + local.tee $1 + local.get $1 + i32.const 1023 + i32.ge_s + select + local.set $1 + local.get $0 + f64.const 8988465674311579538646525e283 + f64.mul + else + local.get $0 + end + else + local.get $1 + i32.const -1022 + i32.lt_s + if (result f64) + local.get $0 + f64.const 2.004168360008973e-292 + f64.mul + local.set $0 + local.get $1 + i32.const 969 + i32.add + local.tee $1 + i32.const -1022 + i32.lt_s + if (result f64) + i32.const -1022 + local.get $1 + i32.const 969 + i32.add + local.tee $1 + local.get $1 + i32.const -1022 + i32.le_s + select + local.set $1 + local.get $0 + f64.const 2.004168360008973e-292 + f64.mul + else + local.get $0 + end + else + local.get $0 + end + end + local.get $1 + i64.extend_i32_s + i64.const 1023 + i64.add + i64.const 52 + i64.shl + f64.reinterpret_i64 + f64.mul + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u if - i32.const 0 - i32.const 1120 - i32.const 25 - i32.const 1 + i32.const 14064 + i32.const 15664 + i32.const 19 + i32.const 48 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - i32.const 65600 - call $~lib/string/String.fromCharCode@varargs - local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1840 - call $~lib/string/String.__eq - i32.eqz + i32.load + local.tee $2 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $3 + i32.lt_u + select + local.tee $1 + call $~lib/rt/itcms/__renew + local.tee $3 + local.get $2 + i32.ne if + local.get $0 + local.get $3 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $3 i32.const 0 - i32.const 1120 - i32.const 26 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__link end - i32.const 1 - global.set $~argumentsLength - i32.const 54 - call $~lib/string/String.fromCharCode@varargs - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:std/string + ) + (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + if + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $folding-inner0 local.get $0 - i32.const 1872 - call $~lib/string/String.__eq + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 i32.eqz + br_if $folding-inner0 + local.get $0 + i32.load16_u + local.set $3 + loop $while-continue|0 + block $__inlined_func$~lib/util/string/isSpace$6 (result i32) + local.get $3 + i32.const 128 + i32.or + i32.const 160 + i32.eq + local.get $3 + i32.const 9 + i32.sub + i32.const 4 + i32.le_u + i32.or + local.get $3 + i32.const 5760 + i32.lt_u + br_if $__inlined_func$~lib/util/string/isSpace$6 + drop + i32.const 1 + local.get $3 + i32.const -8192 + i32.add + i32.const 10 + i32.le_u + br_if $__inlined_func$~lib/util/string/isSpace$6 + drop + block $break|0 + block $case6|0 + local.get $3 + i32.const 5760 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8232 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8233 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8239 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 8287 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 12288 + i32.eq + br_if $case6|0 + local.get $3 + i32.const 65279 + i32.eq + br_if $case6|0 + br $break|0 + end + i32.const 1 + br $__inlined_func$~lib/util/string/isSpace$6 + end + i32.const 0 + end + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + f64.const 1 + local.set $4 + local.get $3 + i32.const 45 + i32.eq + local.tee $6 + local.get $3 + i32.const 43 + i32.eq + i32.or if - i32.const 0 - i32.const 1120 - i32.const 27 + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.tee $2 + i32.eqz + br_if $folding-inner0 + f64.const -1 + f64.const 1 + local.get $6 + select + local.set $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $3 end - i32.const 1 - global.set $~argumentsLength - i32.const 65590 - call $~lib/string/String.fromCharCode@varargs - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz + local.get $1 if - i32.const 0 - i32.const 1120 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 2 + i32.lt_s + local.get $1 + i32.const 36 + i32.gt_s + i32.or + br_if $folding-inner0 + local.get $1 + i32.const 16 + i32.eq + if + local.get $3 + i32.const 48 + i32.eq + local.get $2 + i32.const 2 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 + end + end + else + local.get $3 + i32.const 48 + i32.eq + local.get $2 + i32.const 2 + i32.gt_s + i32.and + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $0 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $3 + i32.const 98 + i32.ne + if + local.get $3 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $3 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + end + end + local.get $1 + i32.const 10 + local.get $1 + select + local.set $1 end - i32.const 55296 - i32.const 57088 - call $~lib/string/String.fromCharCode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1904 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 29 + local.get $2 + i32.const 1 + i32.sub + local.set $7 + loop $while-continue|2 + local.get $2 + local.tee $3 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $2 + local.get $3 + if + block $while-break|2 + local.get $0 + i32.load16_u + local.tee $6 + i32.const 48 + i32.sub + local.tee $3 + i32.const 10 + i32.ge_u + if + local.get $6 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + if (result i32) + local.get $6 + i32.const 55 + i32.sub + else + local.get $6 + i32.const 87 + i32.sub + local.get $6 + local.get $6 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + end + local.set $3 + end + local.get $1 + local.get $3 + i32.le_u + if + local.get $2 + local.get $7 + i32.eq + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $1 + f64.convert_i32_s + f64.mul + local.get $3 + f64.convert_i32_u + f64.add + local.set $5 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|2 + end + end end - i32.const 2 - i32.const 4 - i32.const 1936 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/string/String.fromCharCodes - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 30 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3 i32.const 4 - i32.const 2000 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/string/String.fromCharCodes - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $5 + f64.mul + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + f64.const nan:0x8000000000000 + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz + if local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 i32.store - local.get $0 - i32.const 2032 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 31 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - i32.const 5 - i32.const 4 - i32.const 2064 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/string/String.fromCharCodes - local.set $0 - global.get $~lib/memory/__stack_pointer local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 i32.store - local.get $0 - i32.const 2112 - call $~lib/string/String.__eq - i32.eqz - if + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 i32.const 0 - i32.const 1120 - i32.const 32 + local.get $2 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/string/String.fromCodePoint - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1776 - call $~lib/string/String.__eq - i32.eqz - if + i32.shl + memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 i32.const 0 - i32.const 1120 - i32.const 34 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $3 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end + end + end + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i64) + local.get $1 + local.get $0 + i64.sub + local.set $9 + i64.const 1 + i32.const 0 + local.get $2 + i32.sub + local.tee $11 + i64.extend_i32_s + local.tee $0 + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $12 + local.get $1 + i64.and + local.set $8 + local.get $1 + local.get $0 + i64.shr_u + i32.wrap_i64 + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add end - i32.const 54 - call $~lib/string/String.fromCodePoint - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 35 - i32.const 1 - call $~lib/builtins/abort - unreachable + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add end - i32.const 119558 - call $~lib/string/String.fromCodePoint - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2144 - call $~lib/string/String.__eq - i32.eqz + end + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s if - i32.const 0 - i32.const 1120 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 2176 - i32.store - block $__inlined_func$~lib/string/String#startsWith$296 + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $2 + i32.const 1000000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 100000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 10000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000 + i32.div_u + local.set $5 + local.get $2 + i32.const 100000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000 + i32.div_u + local.set $5 + local.get $2 + i32.const 10000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100 + i32.div_u + local.set $5 + local.get $2 + i32.const 100 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10 + i32.div_u + local.set $5 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $5 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $5 + end local.get $4 - i32.const 2172 - i32.load + local.get $5 + i32.or + if + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.const 1 + i32.shl + i32.const 23344 + i32.add + local.get $5 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $7 i32.const 1 - i32.shr_u - local.tee $4 - i32.lt_s + i32.sub + local.set $7 + local.get $3 + local.get $2 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $8 + i64.add + local.tee $0 + i64.ge_u if - global.get $~lib/memory/__stack_pointer - i32.const 8 + global.get $~lib/util/number/_K + local.get $7 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - br $__inlined_func$~lib/string/String#startsWith$296 + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 24272 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 + i32.const 1 + i32.shl + i32.const 23342 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u + local.get $3 + local.get $0 + i64.sub + local.get $1 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $0 + local.get $1 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $0 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2176 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 2176 - local.get $4 - call $~lib/util/string/compareImpl - i32.eqz - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + br $while-continue|0 end - local.get $0 - i32.eqz + end + loop $while-continue|4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + local.get $8 + i64.const 10 + i64.mul + local.tee $0 + local.get $11 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne if - i32.const 0 - i32.const 1120 - i32.const 38 + local.get $4 + local.tee $2 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.shl + i32.const 23344 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store + local.get $7 i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2208 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.set $7 local.get $0 - i32.store + local.get $12 + i64.and + local.tee $8 + local.get $3 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 24272 + i32.add + i64.load32_u + i64.mul + local.set $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 23342 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|6 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 2208 - i32.store - block $__inlined_func$~lib/string/String#endsWith$297 - i32.const 536870910 - local.get $4 - local.get $4 - i32.const 536870910 - i32.gt_s - select - i32.const 2204 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - br $__inlined_func$~lib/string/String#endsWith$297 - end - global.get $~lib/memory/__stack_pointer + local.get $8 + i64.gt_u + local.get $3 + local.get $8 + i64.sub + local.get $10 + i64.ge_u + i32.and + if (result i32) local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2208 - i32.store offset=4 + local.get $8 + local.get $10 + i64.add + local.tee $1 + i64.gt_u local.get $0 - local.get $5 - i32.const 2208 - local.get $4 - call $~lib/util/string/compareImpl - i32.eqz - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $8 + i64.sub + local.get $1 + local.get $0 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 39 + local.get $7 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $7 + local.get $8 + local.get $10 + i64.add + local.set $8 + br $while-continue|6 end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + ) + (func $std/string/getString (result i32) + global.get $std/string/str + ) + (func $start:std/string + (local $0 i32) + (local $1 f64) + (local $2 f32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 26636 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2240 - i32.store offset=4 - local.get $0 - i32.const 2240 i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 + i32.const 76 + memory.fill + global.get $std/string/str + i32.const 1056 i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.eqz if i32.const 0 i32.const 1120 - i32.const 40 + i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.const 2272 - call $~lib/string/String#padStart - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=4 - local.get $0 - local.get $4 + i32.const 1168 + i32.const 1168 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 42 + i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 15 - i32.const 2272 - call $~lib/string/String#padStart - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 - i32.store offset=4 - local.get $0 - local.get $4 + i32.const 1200 + i32.const 1200 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 43 + i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 3 - i32.const 2272 - call $~lib/string/String#padStart - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2304 + i32.const 1232 + i32.const 1232 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 44 + i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 10 - i32.const 1712 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 16 + i32.ne if i32.const 0 i32.const 1120 - i32.const 45 + i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 100 - i32.const 1712 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2336 - i32.const 5 - i32.const 2272 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $0 - i32.const 2368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2336 - i32.const 6 - i32.const 2400 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + block $__inlined_func$~lib/string/String#charCodeAt$294 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#charCodeAt$294 + end + local.get $0 + i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end local.get $0 - i32.const 2432 - call $~lib/string/String.__eq - i32.eqz + i32.const 104 + i32.ne if i32.const 0 i32.const 1120 - i32.const 48 + i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 8 - i32.const 2400 - call $~lib/string/String#padStart - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store + block $__inlined_func$~lib/string/String#codePointAt$295 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $0 + i32.const 1 + i32.le_u + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#codePointAt$295 + end + local.get $0 + i32.const 2 + i32.eq + local.get $4 + i32.load16_u offset=2 + local.tee $0 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#codePointAt$295 + end + local.get $4 + i32.load16_u offset=4 + local.tee $4 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String#codePointAt$295 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.shl + local.get $4 + i32.add + i32.const 56613888 + i32.sub + local.set $0 + end local.get $0 - i32.const 2464 - call $~lib/string/String.__eq - i32.eqz + i32.const 105 + i32.ne if i32.const 0 i32.const 1120 - i32.const 49 + i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end + memory.size + i32.const 16 + i32.shl + i32.const 59404 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1492 + i32.const 1488 + i32.store + i32.const 1496 + i32.const 1488 + i32.store + i32.const 1488 + global.set $~lib/rt/itcms/pinSpace + i32.const 1524 + i32.const 1520 + i32.store + i32.const 1528 + i32.const 1520 + i32.store + i32.const 1520 + global.set $~lib/rt/itcms/toSpace + i32.const 1604 + i32.const 1600 + i32.store + i32.const 1608 + i32.const 1600 + i32.store + i32.const 1600 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $0 i32.store offset=8 local.get $0 - i32.const 0 - i32.const 2272 - call $~lib/string/String#padEnd + i32.const 15 + call $~lib/string/String#at local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -11179,6 +12030,13 @@ global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 15 + call $~lib/string/String#charAt + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=4 local.get $0 local.get $4 @@ -11187,7 +12045,7 @@ if i32.const 0 i32.const 1120 - i32.const 51 + i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable @@ -11197,9 +12055,8 @@ local.tee $0 i32.store offset=8 local.get $0 - i32.const 15 - i32.const 2272 - call $~lib/string/String#padEnd + i32.const -1 + call $~lib/string/String#at local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -11207,6 +12064,24 @@ global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $5 + i32.store offset=12 + local.get $4 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + call $~lib/string/String#charAt + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store offset=4 local.get $0 local.get $4 @@ -11215,273 +12090,303 @@ if i32.const 0 i32.const 1120 - i32.const 52 + i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 3 - i32.const 2272 - call $~lib/string/String#padEnd + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.sub + call $~lib/string/String#at local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2304 + i32.const 1744 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 53 + i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - i32.const 10 - i32.const 1712 - call $~lib/string/String#padEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq + call $~lib/string/String.__not i32.eqz if i32.const 0 i32.const 1120 - i32.const 54 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1776 + call $~lib/string/String.__not + if + i32.const 0 + i32.const 1120 + i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1808 - i32.const 100 - i32.const 1712 - call $~lib/string/String#padEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz + call $~lib/string/String.__not if i32.const 0 i32.const 1120 - i32.const 55 + i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 5 - i32.const 2272 - call $~lib/string/String#padEnd + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2512 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 56 + i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 6 - i32.const 2336 - call $~lib/string/String#padEnd + i32.const 1 + global.set $~argumentsLength + i32.const 65600 + call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2544 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 57 + i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 8 - i32.const 2336 - call $~lib/string/String#padEnd + i32.const 1 + global.set $~argumentsLength + i32.const 54 + call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2576 + i32.const 1872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1712 - i32.const 1712 - i32.const 0 - call $~lib/string/String#indexOf - if - i32.const 0 - i32.const 1120 - i32.const 60 + i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2176 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne + i32.const 1 + global.set $~argumentsLength + i32.const 65590 + call $~lib/string/String.fromCharCode@varargs + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 61 + i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 - i32.const 0 - call $~lib/string/String#indexOf + i32.const 55296 + i32.const 57088 + call $~lib/string/String.fromCharCode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1904 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 62 + i32.const 29 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 2 + i32.const 4 + i32.const 1936 + call $~lib/rt/__newArray + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 + local.get $0 i32.store offset=4 local.get $0 - local.get $4 - i32.const 0 - call $~lib/string/String#indexOf + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1968 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 63 + i32.const 30 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 3 + i32.const 4 + i32.const 2000 + call $~lib/rt/__newArray + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - i32.const 1712 - i32.const 0 - call $~lib/string/String#indexOf + i32.const 2032 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 64 + i32.const 31 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 5 + i32.const 4 + i32.const 2064 + call $~lib/rt/__newArray + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/string/String.fromCharCodes + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - i32.const 2624 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne + i32.const 2112 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 65 + i32.const 32 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 0 + call $~lib/string/String.fromCodePoint + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 i32.store local.get $0 - i32.const 2656 - i32.const 0 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne + i32.const 1776 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 66 + i32.const 34 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 54 + call $~lib/string/String.fromCodePoint + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 i32.store local.get $0 - i32.const 2624 - i32.const 2 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 67 + i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 119558 + call $~lib/string/String.fromCodePoint + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 + local.get $0 i32.store local.get $0 - i32.const 2624 - i32.const 3 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne + i32.const 2144 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 68 + i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable @@ -11490,44 +12395,71 @@ global.get $std/string/str local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - i32.const 2688 - i32.const -1 - call $~lib/string/String#indexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 69 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - global.set $~argumentsLength - i32.const 1712 - i32.const 1712 - call $~lib/string/String#lastIndexOf@varargs - if - i32.const 0 - i32.const 1120 - i32.const 71 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 2176 + i32.store + block $__inlined_func$~lib/string/String#startsWith$296 + local.get $4 + i32.const 2172 + i32.load i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + br $__inlined_func$~lib/string/String#startsWith$296 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2176 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2176 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 1 - global.set $~argumentsLength - i32.const 1712 - i32.const 2176 - call $~lib/string/String#lastIndexOf@varargs - i32.const -1 - i32.ne + local.get $0 + i32.eqz if i32.const 0 i32.const 1120 - i32.const 72 + i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable @@ -11538,43 +12470,100 @@ i32.store i32.const 1 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1712 - call $~lib/string/String#lastIndexOf@varargs + i32.store global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $4 + i32.const 2208 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $4 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 73 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store + block $__inlined_func$~lib/string/String#endsWith$297 + i32.const 536870910 + local.get $4 + local.get $4 + i32.const 536870910 + i32.gt_s + select + i32.const 2204 + i32.load i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.tee $4 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + br $__inlined_func$~lib/string/String#endsWith$297 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store offset=4 + local.get $0 + local.get $5 + i32.const 2208 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store - i32.const 1 - global.set $~argumentsLength + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 2624 - call $~lib/string/String#lastIndexOf@varargs - i32.const 2 - i32.ne + i32.eqz if i32.const 0 i32.const 1120 - i32.const 74 + i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable @@ -11583,17 +12572,38 @@ global.get $std/string/str local.tee $0 i32.store - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2656 - call $~lib/string/String#lastIndexOf@varargs + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2240 + i32.store offset=4 + local.get $0 + i32.const 2240 + i32.const 0 + call $~lib/string/String#indexOf i32.const -1 i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz if i32.const 0 i32.const 1120 - i32.const 75 + i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable @@ -11601,54 +12611,27 @@ global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $0 - i32.store - i32.const 1 - global.set $~argumentsLength + i32.store offset=8 local.get $0 - i32.const 2720 - call $~lib/string/String#lastIndexOf@varargs - i32.const 15 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 76 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store local.get $0 - i32.const 2624 - i32.const 2 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $0 - i32.store + local.tee $4 + i32.store offset=4 local.get $0 - i32.const 2624 - i32.const 3 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.ne + local.get $4 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 78 + i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable @@ -11656,2593 +12639,2761 @@ global.get $~lib/memory/__stack_pointer global.get $std/string/str local.tee $0 - i32.store + i32.store offset=8 local.get $0 - i32.const 2688 - i32.const -1 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.const 15 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store local.get $0 - i32.const 2752 - i32.const 0 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $0 - i32.store + local.tee $4 + i32.store offset=4 local.get $0 - i32.const 2176 - i32.const 0 - call $~lib/string/String#lastIndexOf - if - i32.const 0 - i32.const 1120 - i32.const 81 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 1712 - i32.const 1712 - call $~lib/string/String#localeCompare + local.get $4 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 83 + i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 i32.const 1712 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + i32.const 3 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 84 + i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - i32.const 1808 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 85 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2784 - i32.const 2784 - call $~lib/string/String#localeCompare - if - i32.const 0 - i32.const 1120 - i32.const 86 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 2336 - i32.const 2816 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + i32.const 10 + i32.const 1712 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 87 + i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2848 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + i32.const 1808 + i32.const 100 + i32.const 1712 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 88 + i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2816 i32.const 2336 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + i32.const 5 + i32.const 2272 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2368 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 89 + i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 i32.const 2336 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + i32.const 6 + i32.const 2400 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2432 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 90 + i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 i32.const 2336 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + i32.const 8 + i32.const 2400 + call $~lib/string/String#padStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2464 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 91 + i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2880 - i32.const 2944 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 92 + i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 15 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 93 + i32.const 52 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2944 - i32.const 2880 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + i32.const 1712 + i32.const 3 + i32.const 2272 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2304 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 94 + i32.const 53 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - i32.const 2304 - call $~lib/string/String#localeCompare - i32.const -1 - i32.ne + i32.const 10 + i32.const 1712 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 95 + i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1776 + i32.const 1808 + i32.const 100 i32.const 1712 - call $~lib/string/String#localeCompare - i32.const 1 - i32.ne + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 96 + i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - call $~lib/string/String#trimStart + i32.const 2336 + i32.const 5 + i32.const 2272 + call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 98 + i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 - call $~lib/string/String#trimStart + i32.const 2336 + i32.const 6 + i32.const 2336 + call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2976 + i32.const 2544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 99 + i32.const 57 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 - call $~lib/string/String#trimStart + i32.const 2336 + i32.const 8 + i32.const 2336 + call $~lib/string/String#padEnd local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3056 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 100 + i32.const 58 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 - call $~lib/string/String#trimEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + i32.const 0 + call $~lib/string/String#indexOf if i32.const 0 i32.const 1120 - i32.const 102 + i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 - call $~lib/string/String#trimEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2976 - call $~lib/string/String.__eq - i32.eqz + i32.const 1712 + i32.const 2176 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 103 + i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 - call $~lib/string/String#trimEnd - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3104 - call $~lib/string/String.__eq - i32.eqz + i32.const 1808 + i32.const 1808 + i32.const 0 + call $~lib/string/String#indexOf if i32.const 0 i32.const 1120 - i32.const 104 + i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - call $~lib/string/String#trim - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $4 + i32.store offset=4 local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + local.get $4 + i32.const 0 + call $~lib/string/String#indexOf if i32.const 0 i32.const 1120 - i32.const 106 + i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2976 - call $~lib/string/String#trim - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store local.get $0 - i32.const 2976 - call $~lib/string/String.__eq - i32.eqz + i32.const 1712 + i32.const 0 + call $~lib/string/String#indexOf if i32.const 0 i32.const 1120 - i32.const 107 + i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3008 - call $~lib/string/String#trim - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $std/string/str + local.tee $0 i32.store local.get $0 - i32.const 2336 - call $~lib/string/String.__eq - i32.eqz + i32.const 2624 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 108 + i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3152 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3152 + global.get $std/string/str + local.tee $0 i32.store - i32.const 3152 - call $~lib/util/string/strtob - i32.eqz + local.get $0 + i32.const 2656 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 111 + i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3200 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 3200 + global.get $std/string/str + local.tee $0 i32.store - i32.const 3200 - call $~lib/util/string/strtob - i32.eqz + local.get $0 + i32.const 2624 + i32.const 2 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 112 + i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3248 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 3248 + global.get $std/string/str + local.tee $0 i32.store - i32.const 3248 - call $~lib/util/string/strtob + local.get $0 + i32.const 2624 + i32.const 3 + call $~lib/string/String#indexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 113 + i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 1712 + global.get $std/string/str + local.tee $0 i32.store - i32.const 1712 - call $~lib/util/string/strtob + local.get $0 + i32.const 2688 + i32.const -1 + call $~lib/string/String#indexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 114 + i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3296 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer - i32.const 3296 - i32.store - i32.const 3296 - call $~lib/util/string/strtob + i32.const 1 + global.set $~argumentsLength + i32.const 1712 + i32.const 1712 + call $~lib/string/String#lastIndexOf@varargs if i32.const 0 i32.const 1120 - i32.const 115 + i32.const 71 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.store offset=36 - global.get $~lib/memory/__stack_pointer - i32.const 3328 - i32.store - i32.const 3328 - call $~lib/util/string/strtob + i32.const 1 + global.set $~argumentsLength + i32.const 1712 + i32.const 2176 + call $~lib/string/String#lastIndexOf@varargs + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 116 + i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 3360 - i32.store offset=40 + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 1712 + call $~lib/string/String#lastIndexOf@varargs global.get $~lib/memory/__stack_pointer - i32.const 3360 + global.get $std/string/str + local.tee $4 i32.store - i32.const 3360 - call $~lib/util/string/strtob + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne if i32.const 0 i32.const 1120 - i32.const 117 + i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2624 + call $~lib/string/String#lastIndexOf@varargs + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 119 + i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3424 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2656 + call $~lib/string/String#lastIndexOf@varargs + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 120 + i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 2720 + call $~lib/string/String#lastIndexOf@varargs + i32.const 15 + i32.ne if i32.const 0 i32.const 1120 - i32.const 121 + i32.const 76 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3488 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 2 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 122 + i32.const 77 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3520 - i32.const 0 - call $~lib/string/parseInt - f64.const 5 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2624 + i32.const 3 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.ne if i32.const 0 i32.const 1120 - i32.const 123 + i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3552 - i32.const 0 - call $~lib/string/parseInt - f64.const 455 - f64.ne + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2688 + i32.const -1 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 124 + i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3584 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2752 i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.ne + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 125 + i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3616 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + local.get $0 + i32.const 2176 i32.const 0 - call $~lib/string/parseInt - f64.const 3855 - f64.ne + call $~lib/string/String#lastIndexOf if i32.const 0 i32.const 1120 - i32.const 126 + i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3648 - i32.const 0 - call $~lib/string/parseInt - f64.const 11 - f64.ne + i32.const 1712 + i32.const 1712 + call $~lib/string/String#localeCompare if i32.const 0 i32.const 1120 - i32.const 127 + i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3680 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 1808 + i32.const 1712 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 128 + i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3712 - i32.const 0 - call $~lib/string/parseInt - f64.const -123 - f64.ne + i32.const 1712 + i32.const 1808 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 129 + i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3744 - i32.const 0 - call $~lib/string/parseInt - f64.const 123 - f64.ne + i32.const 2784 + i32.const 2784 + call $~lib/string/String#localeCompare if i32.const 0 i32.const 1120 - i32.const 130 + i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3776 - i32.const 0 - call $~lib/string/parseInt - f64.const -12 - f64.ne + i32.const 2336 + i32.const 2816 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 131 + i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + i32.const 2336 + i32.const 2848 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 132 + i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + i32.const 2816 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 133 + i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3840 - i32.const 16 - call $~lib/string/parseInt - f64.const 2833 - f64.ne + i32.const 2880 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 134 + i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3872 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 2912 + i32.const 2336 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 135 + i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3904 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 2880 + i32.const 2944 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 136 + i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3936 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 2336 + i32.const 2912 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 137 + i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3968 - i32.const 0 - call $~lib/string/parseInt - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.eqz + i32.const 2944 + i32.const 2880 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 138 + i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4000 - i32.const 0 - call $~lib/string/parseInt - i32.const 4048 - i32.const 16 - call $~lib/string/parseInt - f64.ne + i32.const 1712 + i32.const 2304 + call $~lib/string/String#localeCompare + i32.const -1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 139 + i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4080 - i32.const 0 - call $~lib/string/parseInt - f64.const 36893488147419103232 - f64.ne + i32.const 1776 + i32.const 1712 + call $~lib/string/String#localeCompare + i32.const 1 + i32.ne if i32.const 0 i32.const 1120 - i32.const 140 + i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4080 - i32.const 13 - call $~lib/string/parseInt - f64.const 5135857308667095285760 - f64.ne + i32.const 1712 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 141 + i32.const 98 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4144 - i32.const 10 - call $~lib/string/parseInt - f64.const -1.e+24 - f64.ne + i32.const 2976 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 142 + i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4224 - i32.const 16 - call $~lib/string/parseInt - f64.const 75557863725914323419136 - f64.ne + i32.const 3008 + call $~lib/string/String#trimStart + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3056 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 143 + i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4288 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 1712 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 144 + i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4320 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 - f64.ne + i32.const 2976 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 145 + i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4368 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 3008 + call $~lib/string/String#trimEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3104 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 147 + i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4400 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 - f64.ne + i32.const 1712 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 148 + i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4448 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + i32.const 2976 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2976 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 149 + i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4480 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.ne + i32.const 3008 + call $~lib/string/String#trim + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 150 + i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4512 - i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store + i32.const 3152 + call $~lib/util/string/strtob + i32.eqz if i32.const 0 i32.const 1120 - i32.const 151 + i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store + i32.const 3200 + call $~lib/util/string/strtob + i32.eqz if i32.const 0 i32.const 1120 - i32.const 152 + i32.const 112 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4560 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store + i32.const 3248 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 153 + i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store + i32.const 1712 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 154 + i32.const 114 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 - i32.const 37 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store + i32.const 3296 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 155 + i32.const 115 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4624 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store + i32.const 3328 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 156 + i32.const 116 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 - i32.const 0 - call $~lib/string/parseInt - local.tee $1 - local.get $1 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store + i32.const 3360 + call $~lib/util/string/strtob if i32.const 0 i32.const 1120 - i32.const 157 + i32.const 117 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 3392 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store - i32.const 4656 - call $~lib/util/string/strtod - f32.demote_f64 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $2 - f32.eq + call $~lib/string/parseInt + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 158 + i32.const 119 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 - call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + i32.const 3424 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 159 + i32.const 120 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=44 - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store - i32.const 4656 - call $~lib/util/string/strtod - f32.demote_f64 - local.tee $2 - local.get $2 - f32.eq + i32.const 3456 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 160 + i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=48 - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store - i32.const 4656 - call $~lib/util/string/strtod - local.tee $1 - local.get $1 - f64.eq + i32.const 3488 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 161 + i32.const 122 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 3520 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store - call $~lib/util/string/strtol - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2147483647 - i32.ne + call $~lib/string/parseInt + f64.const 5 + f64.ne if i32.const 0 i32.const 1120 - i32.const 163 + i32.const 123 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store offset=52 - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store - call $~lib/util/string/strtol - i32.const 2147483647 - i32.ne + i32.const 3552 + i32.const 0 + call $~lib/string/parseInt + f64.const 455 + f64.ne if i32.const 0 i32.const 1120 - i32.const 164 + i32.const 124 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 3584 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4928 - i32.store - call $~lib/util/string/strtol - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i64.const 9223372036854775807 - i64.ne + call $~lib/string/parseInt + f64.const 3855 + f64.ne if i32.const 0 i32.const 1120 - i32.const 165 + i32.const 125 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4928 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - i32.const 4928 - i32.store - call $~lib/util/string/strtol - i64.const 9223372036854775807 - i64.ne + i32.const 3616 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.ne if i32.const 0 i32.const 1120 - i32.const 166 + i32.const 126 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 - call $~lib/number/F64.parseFloat - f64.const 0 + i32.const 3648 + i32.const 0 + call $~lib/string/parseInt + f64.const 11 f64.ne if i32.const 0 i32.const 1120 - i32.const 169 + i32.const 127 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - call $~lib/number/F64.parseFloat + i32.const 3680 + i32.const 0 + call $~lib/string/parseInt f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 170 + i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4992 - call $~lib/number/F64.parseFloat - f64.const 1 + i32.const 3712 + i32.const 0 + call $~lib/string/parseInt + f64.const -123 f64.ne if i32.const 0 i32.const 1120 - i32.const 171 + i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5024 - call $~lib/number/F64.parseFloat - f64.const 1 + i32.const 3744 + i32.const 0 + call $~lib/string/parseInt + f64.const 123 f64.ne if i32.const 0 i32.const 1120 - i32.const 172 + i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5056 - call $~lib/number/F64.parseFloat - f64.const 1e-05 + i32.const 3776 + i32.const 0 + call $~lib/string/parseInt + f64.const -12 f64.ne if i32.const 0 i32.const 1120 - i32.const 173 + i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5088 - call $~lib/number/F64.parseFloat - f64.const -1e-05 + i32.const 3392 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 174 + i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5120 - call $~lib/number/F64.parseFloat - f64.const -3e-23 + i32.const 3808 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 175 + i32.const 133 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5168 - call $~lib/number/F64.parseFloat - f64.const 3e21 + i32.const 3840 + i32.const 16 + call $~lib/string/parseInt + f64.const 2833 f64.ne if i32.const 0 i32.const 1120 - i32.const 176 + i32.const 134 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5216 - call $~lib/number/F64.parseFloat - f64.const 0.1 + i32.const 3872 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 177 + i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5248 - call $~lib/number/F64.parseFloat - f64.const 0.1 + i32.const 3904 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 178 + i32.const 136 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5280 - call $~lib/number/F64.parseFloat - f64.const 0.1 + i32.const 3936 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 179 + i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5312 - call $~lib/number/F64.parseFloat - f64.const 0.25 - f64.ne + i32.const 3968 + i32.const 0 + call $~lib/string/parseInt + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.eqz if i32.const 0 i32.const 1120 - i32.const 180 + i32.const 138 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5344 - call $~lib/number/F64.parseFloat - f64.const 1e3 + i32.const 4000 + i32.const 0 + call $~lib/string/parseInt + i32.const 4048 + i32.const 16 + call $~lib/string/parseInt f64.ne if i32.const 0 i32.const 1120 - i32.const 181 + i32.const 139 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5376 - call $~lib/number/F64.parseFloat - f64.const 1e-10 + i32.const 4080 + i32.const 0 + call $~lib/string/parseInt + f64.const 36893488147419103232 f64.ne if i32.const 0 i32.const 1120 - i32.const 182 + i32.const 140 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5424 - call $~lib/number/F64.parseFloat - f64.const 1e-30 + i32.const 4080 + i32.const 13 + call $~lib/string/parseInt + f64.const 5135857308667095285760 f64.ne if i32.const 0 i32.const 1120 - i32.const 183 + i32.const 141 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5472 - call $~lib/number/F64.parseFloat - f64.const 1e-323 + i32.const 4144 + i32.const 10 + call $~lib/string/parseInt + f64.const -1.e+24 f64.ne if i32.const 0 i32.const 1120 - i32.const 184 + i32.const 142 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5520 - call $~lib/number/F64.parseFloat - f64.const 0 + i32.const 4224 + i32.const 16 + call $~lib/string/parseInt + f64.const 75557863725914323419136 f64.ne if i32.const 0 i32.const 1120 - i32.const 185 + i32.const 143 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5568 - call $~lib/number/F64.parseFloat - f64.const 1.e+308 + i32.const 4288 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 186 + i32.const 144 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5600 - call $~lib/number/F64.parseFloat - f64.const inf + i32.const 4320 + i32.const 0 + call $~lib/string/parseInt + f64.const 2 f64.ne if i32.const 0 i32.const 1120 - i32.const 187 + i32.const 145 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + i32.const 4368 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 188 + i32.const 147 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5632 - call $~lib/number/F64.parseFloat - f64.const 0.1 + i32.const 4400 + i32.const 0 + call $~lib/string/parseInt + f64.const 2 f64.ne if i32.const 0 i32.const 1120 - i32.const 191 + i32.const 148 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5680 - call $~lib/number/F64.parseFloat - f64.const 1e-10 + i32.const 4448 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 192 + i32.const 149 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5728 - call $~lib/number/F64.parseFloat - f64.const 10 + i32.const 4480 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 193 + i32.const 150 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5776 - call $~lib/number/F64.parseFloat - f64.const 1 + i32.const 4512 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 194 + i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5808 - call $~lib/number/F64.parseFloat - f64.const 1 - f64.ne + i32.const 1712 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 195 + i32.const 152 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5840 - call $~lib/number/F64.parseFloat - f64.const 10 - f64.ne + i32.const 4560 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 196 + i32.const 153 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5888 - call $~lib/number/F64.parseFloat - f64.const 123456789 - f64.ne + i32.const 4592 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 197 + i32.const 154 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5936 - call $~lib/number/F64.parseFloat - f64.const 1 - f64.ne + i32.const 2400 + i32.const 37 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 198 + i32.const 155 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5984 - call $~lib/number/F64.parseFloat - f64.const 1e-60 - f64.ne + i32.const 4624 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 200 + i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6016 - call $~lib/number/F64.parseFloat - f64.const 1.e+60 - f64.ne + i32.const 4656 + i32.const 0 + call $~lib/string/parseInt + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 201 + i32.const 157 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6048 - call $~lib/number/F64.parseFloat - f64.const 123.4 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + f32.demote_f64 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $2 + f32.eq if i32.const 0 i32.const 1120 - i32.const 204 + i32.const 158 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6080 + i32.const 4656 call $~lib/number/F64.parseFloat - f64.const 1 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 205 + i32.const 159 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6112 - call $~lib/number/F64.parseFloat - f64.const -1.1 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + f32.demote_f64 + local.tee $2 + local.get $2 + f32.eq if i32.const 0 i32.const 1120 - i32.const 206 + i32.const 160 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6160 - call $~lib/number/F64.parseFloat - f64.const 10 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 + call $~lib/util/string/strtod + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 207 + i32.const 161 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6208 - call $~lib/number/F64.parseFloat - f64.const 10 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2147483647 + i32.ne if i32.const 0 i32.const 1120 - i32.const 208 + i32.const 163 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6256 - call $~lib/number/F64.parseFloat - f64.const 0.022 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + call $~lib/util/string/strtol + i32.const 2147483647 + i32.ne if i32.const 0 i32.const 1120 - i32.const 209 + i32.const 164 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6304 - call $~lib/number/F64.parseFloat - f64.const 11 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 9223372036854775807 + i64.ne if i32.const 0 i32.const 1120 - i32.const 210 + i32.const 165 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3808 - call $~lib/number/F64.parseFloat - f64.const 0 - f64.ne + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 4928 + i32.store + call $~lib/util/string/strtol + i64.const 9223372036854775807 + i64.ne if i32.const 0 i32.const 1120 - i32.const 211 + i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6336 + i32.const 3392 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 212 + i32.const 169 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6368 + i32.const 3456 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 213 + i32.const 170 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6400 + i32.const 4992 call $~lib/number/F64.parseFloat - f64.const 1.1 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 214 + i32.const 171 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6432 + i32.const 5024 call $~lib/number/F64.parseFloat - f64.const -1.1 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 215 + i32.const 172 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6464 + i32.const 5056 call $~lib/number/F64.parseFloat - f64.const -1.1 + f64.const 1e-05 f64.ne if i32.const 0 i32.const 1120 - i32.const 216 + i32.const 173 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6496 + i32.const 5088 call $~lib/number/F64.parseFloat - f64.const -1.1 + f64.const -1e-05 f64.ne if i32.const 0 i32.const 1120 - i32.const 217 + i32.const 174 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6528 + i32.const 5120 call $~lib/number/F64.parseFloat - f64.const -1.1 + f64.const -3e-23 f64.ne if i32.const 0 i32.const 1120 - i32.const 218 + i32.const 175 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6560 + i32.const 5168 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 3e21 f64.ne if i32.const 0 i32.const 1120 - i32.const 219 + i32.const 176 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6592 + i32.const 5216 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 220 + i32.const 177 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6624 + i32.const 5248 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 221 + i32.const 178 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6656 + i32.const 5280 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 222 + i32.const 179 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6688 + i32.const 5312 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 0.25 f64.ne if i32.const 0 i32.const 1120 - i32.const 223 + i32.const 180 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6720 + i32.const 5344 call $~lib/number/F64.parseFloat - f64.const 10 + f64.const 1e3 f64.ne if i32.const 0 i32.const 1120 - i32.const 224 + i32.const 181 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6752 + i32.const 5376 call $~lib/number/F64.parseFloat - f64.const 10 + f64.const 1e-10 f64.ne if i32.const 0 i32.const 1120 - i32.const 225 + i32.const 182 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6800 + i32.const 5424 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1e-30 f64.ne if i32.const 0 i32.const 1120 - i32.const 226 + i32.const 183 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6832 + i32.const 5472 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 1e-323 f64.ne if i32.const 0 i32.const 1120 - i32.const 227 + i32.const 184 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6864 + i32.const 5520 call $~lib/number/F64.parseFloat - f64.const 0.1 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 228 + i32.const 185 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6896 + i32.const 5568 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 1.e+308 f64.ne if i32.const 0 i32.const 1120 - i32.const 229 + i32.const 186 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6928 + i32.const 5600 call $~lib/number/F64.parseFloat - f64.const 10 + f64.const inf f64.ne if i32.const 0 i32.const 1120 - i32.const 230 + i32.const 187 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6960 + i32.const 1712 call $~lib/number/F64.parseFloat - f64.const 1 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 231 + i32.const 188 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6992 + i32.const 5632 call $~lib/number/F64.parseFloat f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 232 + i32.const 191 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7024 + i32.const 5680 call $~lib/number/F64.parseFloat - f64.const 0.01 + f64.const 1e-10 f64.ne if i32.const 0 i32.const 1120 - i32.const 233 + i32.const 192 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7072 + i32.const 5728 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 10 f64.ne if i32.const 0 i32.const 1120 - i32.const 234 + i32.const 193 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7104 + i32.const 5776 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 235 + i32.const 194 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7136 + i32.const 5808 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 236 + i32.const 195 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7168 + i32.const 5840 call $~lib/number/F64.parseFloat - f64.const 0.1 + f64.const 10 f64.ne if i32.const 0 i32.const 1120 - i32.const 237 + i32.const 196 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7200 + i32.const 5888 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 123456789 f64.ne if i32.const 0 i32.const 1120 - i32.const 238 + i32.const 197 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7232 + i32.const 5936 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 239 + i32.const 198 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7264 + i32.const 5984 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 1e-60 f64.ne if i32.const 0 i32.const 1120 - i32.const 240 + i32.const 200 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7296 + i32.const 6016 call $~lib/number/F64.parseFloat - f64.const 0.1 + f64.const 1.e+60 f64.ne if i32.const 0 i32.const 1120 - i32.const 241 + i32.const 201 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7328 + i32.const 6048 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 123.4 f64.ne if i32.const 0 i32.const 1120 - i32.const 242 + i32.const 204 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7360 + i32.const 6080 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const 0 - i64.ne + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 243 + i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7392 + i32.const 6112 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const -9223372036854775808 - i64.ne + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 244 + i32.const 206 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7424 + i32.const 6160 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const 0 - i64.ne + f64.const 10 + f64.ne if i32.const 0 i32.const 1120 - i32.const 245 + i32.const 207 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3968 + i32.const 6208 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const -9223372036854775808 - i64.ne + f64.const 10 + f64.ne if i32.const 0 i32.const 1120 - i32.const 246 + i32.const 208 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7456 + i32.const 6256 call $~lib/number/F64.parseFloat - i64.reinterpret_f64 - i64.const -9223372036854775808 - i64.ne + f64.const 0.022 + f64.ne if i32.const 0 i32.const 1120 - i32.const 247 + i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 + i32.const 6304 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 11 + f64.ne if i32.const 0 i32.const 1120 - i32.const 248 + i32.const 210 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4560 + i32.const 3808 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 249 + i32.const 211 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7504 + i32.const 6336 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 250 + i32.const 212 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7536 + i32.const 6368 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 251 + i32.const 213 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7568 + i32.const 6400 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 252 + i32.const 214 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7600 + i32.const 6432 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 253 + i32.const 215 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7632 + i32.const 6464 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 254 + i32.const 216 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7664 + i32.const 6496 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 255 + i32.const 217 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7696 + i32.const 6528 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const -1.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 256 + i32.const 218 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7728 + i32.const 6560 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 257 + i32.const 219 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7760 + i32.const 6592 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 258 + i32.const 220 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7792 + i32.const 6624 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 259 + i32.const 221 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7824 + i32.const 6656 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 260 + i32.const 222 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7856 + i32.const 6688 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 261 + i32.const 223 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7888 + i32.const 6720 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 10 + f64.ne if i32.const 0 i32.const 1120 - i32.const 262 + i32.const 224 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3360 + i32.const 6752 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const 10 + f64.ne if i32.const 0 i32.const 1120 - i32.const 263 + i32.const 225 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7920 + i32.const 6800 call $~lib/number/F64.parseFloat - f64.const 1e22 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 264 + i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7952 + i32.const 6832 call $~lib/number/F64.parseFloat - f64.const 1e-22 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 265 + i32.const 227 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7984 + i32.const 6864 call $~lib/number/F64.parseFloat - f64.const 1.e+23 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 266 + i32.const 228 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8016 + i32.const 6896 call $~lib/number/F64.parseFloat - f64.const 1e-23 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 267 + i32.const 229 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8048 + i32.const 6928 call $~lib/number/F64.parseFloat - f64.const 1.e+37 + f64.const 10 f64.ne if i32.const 0 i32.const 1120 - i32.const 268 + i32.const 230 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8080 + i32.const 6960 call $~lib/number/F64.parseFloat - f64.const 1e-37 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 269 + i32.const 231 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8112 + i32.const 6992 call $~lib/number/F64.parseFloat - f64.const 1.e+38 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 270 + i32.const 232 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8144 + i32.const 7024 call $~lib/number/F64.parseFloat - f64.const 1e-38 + f64.const 0.01 f64.ne if i32.const 0 i32.const 1120 - i32.const 271 + i32.const 233 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8176 + i32.const 7072 call $~lib/number/F64.parseFloat - f64.const 2.220446049250313e-16 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 272 + i32.const 234 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8240 + i32.const 7104 call $~lib/number/F64.parseFloat - f64.const 1797693134862315708145274e284 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 273 + i32.const 235 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8320 + i32.const 7136 call $~lib/number/F64.parseFloat - f64.const 5e-324 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 274 + i32.const 236 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8352 + i32.const 7168 call $~lib/number/F64.parseFloat - f64.const 1.e+308 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 275 + i32.const 237 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8400 + i32.const 7200 call $~lib/number/F64.parseFloat - f64.const 1 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 276 + i32.const 238 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8544 + i32.const 7232 call $~lib/number/F64.parseFloat f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 277 + i32.const 239 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8592 + i32.const 7264 call $~lib/number/F64.parseFloat - f64.const inf + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 278 + i32.const 240 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8640 + i32.const 7296 call $~lib/number/F64.parseFloat - f64.const 0 + f64.const 0.1 f64.ne if i32.const 0 i32.const 1120 - i32.const 279 + i32.const 241 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8688 + i32.const 7328 call $~lib/number/F64.parseFloat - f64.const -inf + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 280 + i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8736 + i32.const 7360 call $~lib/number/F64.parseFloat - f64.const 0 - f64.ne + i64.reinterpret_f64 + i64.const 0 + i64.ne if i32.const 0 i32.const 1120 - i32.const 281 + i32.const 243 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8784 + i32.const 7392 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne if i32.const 0 i32.const 1120 - i32.const 282 + i32.const 244 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8832 + i32.const 7424 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + i64.reinterpret_f64 + i64.const 0 + i64.ne if i32.const 0 i32.const 1120 - i32.const 283 + i32.const 245 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8864 + i32.const 3968 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne if i32.const 0 i32.const 1120 - i32.const 284 + i32.const 246 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8912 + i32.const 7456 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + i64.reinterpret_f64 + i64.const -9223372036854775808 + i64.ne if i32.const 0 i32.const 1120 - i32.const 285 + i32.const 247 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8960 + i32.const 4592 call $~lib/number/F64.parseFloat - f64.const -inf - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 286 + i32.const 248 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9008 + i32.const 4560 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 287 + i32.const 249 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9056 + i32.const 7504 call $~lib/number/F64.parseFloat - f64.const inf - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 288 + i32.const 250 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9104 + i32.const 7536 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 @@ -14250,12 +15401,12 @@ if i32.const 0 i32.const 1120 - i32.const 289 + i32.const 251 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9136 + i32.const 7568 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 @@ -14263,12 +15414,12 @@ if i32.const 0 i32.const 1120 - i32.const 290 + i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9184 + i32.const 7600 call $~lib/number/F64.parseFloat local.tee $1 local.get $1 @@ -14276,2507 +15427,2218 @@ if i32.const 0 i32.const 1120 - i32.const 291 + i32.const 253 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9232 + i32.const 7632 call $~lib/number/F64.parseFloat - f64.const 0 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 295 + i32.const 254 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9424 + i32.const 7664 call $~lib/number/F64.parseFloat - f64.const 1e-323 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 308 + i32.const 255 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9616 + i32.const 7696 call $~lib/number/F64.parseFloat - f64.const 2.225073858507202e-308 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 312 + i32.const 256 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9808 - i32.const 9968 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.const 10128 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 10288 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10448 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.const 7728 call $~lib/number/F64.parseFloat - f64.const 1797693134862315708145274e284 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 315 + i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10608 + i32.const 7760 call $~lib/number/F64.parseFloat - f64.const 9.753531888799502e-104 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 333 + i32.const 258 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10720 + i32.const 7792 call $~lib/number/F64.parseFloat - f64.const 0.5961860348131807 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 334 + i32.const 259 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10832 + i32.const 7824 call $~lib/number/F64.parseFloat - f64.const 0.18150131692180388 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 335 + i32.const 260 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10944 + i32.const 7856 call $~lib/number/F64.parseFloat - f64.const 0.42070823575344535 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 336 + i32.const 261 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11056 + i32.const 7888 call $~lib/number/F64.parseFloat - f64.const 0.6654686306516261 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 337 + i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11168 + i32.const 3360 call $~lib/number/F64.parseFloat - f64.const 0.6101852922970868 - f64.ne + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 338 + i32.const 263 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11280 + i32.const 7920 call $~lib/number/F64.parseFloat - f64.const 0.7696695208236968 + f64.const 1e22 f64.ne if i32.const 0 i32.const 1120 - i32.const 339 + i32.const 264 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11392 + i32.const 7952 call $~lib/number/F64.parseFloat - f64.const 0.25050653222286823 + f64.const 1e-22 f64.ne if i32.const 0 i32.const 1120 - i32.const 340 + i32.const 265 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11504 + i32.const 7984 call $~lib/number/F64.parseFloat - f64.const 0.2740037230228005 + f64.const 1.e+23 f64.ne if i32.const 0 i32.const 1120 - i32.const 341 + i32.const 266 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11616 + i32.const 8016 call $~lib/number/F64.parseFloat - f64.const 0.20723093500497428 + f64.const 1e-23 f64.ne if i32.const 0 i32.const 1120 - i32.const 342 + i32.const 267 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11728 + i32.const 8048 call $~lib/number/F64.parseFloat - f64.const 7.900280238081605 + f64.const 1.e+37 f64.ne if i32.const 0 i32.const 1120 - i32.const 343 + i32.const 268 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11840 + i32.const 8080 call $~lib/number/F64.parseFloat - f64.const 98.22860653737297 + f64.const 1e-37 f64.ne if i32.const 0 i32.const 1120 - i32.const 344 + i32.const 269 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 + i32.const 8112 call $~lib/number/F64.parseFloat - f64.const 746.894972319037 + f64.const 1.e+38 f64.ne if i32.const 0 i32.const 1120 - i32.const 345 + i32.const 270 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12064 + i32.const 8144 call $~lib/number/F64.parseFloat - f64.const 1630.2683202827284 + f64.const 1e-38 f64.ne if i32.const 0 i32.const 1120 - i32.const 346 + i32.const 271 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12176 + i32.const 8176 call $~lib/number/F64.parseFloat - f64.const 46371.68629719171 + f64.const 2.220446049250313e-16 f64.ne if i32.const 0 i32.const 1120 - i32.const 347 + i32.const 272 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12288 + i32.const 8240 call $~lib/number/F64.parseFloat - f64.const 653780.5944497711 + f64.const 1797693134862315708145274e284 f64.ne if i32.const 0 i32.const 1120 - i32.const 348 + i32.const 273 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12400 + i32.const 8320 call $~lib/number/F64.parseFloat - f64.const 234632.43565024371 + f64.const 5e-324 f64.ne if i32.const 0 i32.const 1120 - i32.const 349 + i32.const 274 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12512 + i32.const 8352 call $~lib/number/F64.parseFloat - f64.const 97094817.16420048 + f64.const 1.e+308 f64.ne if i32.const 0 i32.const 1120 - i32.const 350 + i32.const 275 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12624 + i32.const 8400 call $~lib/number/F64.parseFloat - f64.const 499690852.20518744 + f64.const 1 f64.ne if i32.const 0 i32.const 1120 - i32.const 351 + i32.const 276 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12736 + i32.const 8544 call $~lib/number/F64.parseFloat - f64.const 7925201200557245595648 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 352 + i32.const 277 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 + i32.const 8592 call $~lib/number/F64.parseFloat - f64.const 6096564585983177528398588e5 + f64.const inf f64.ne if i32.const 0 i32.const 1120 - i32.const 353 + i32.const 278 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12960 + i32.const 8640 call $~lib/number/F64.parseFloat - f64.const 4800416117477028695992383e42 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 354 + i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13072 + i32.const 8688 call $~lib/number/F64.parseFloat - f64.const 8524829079817968137287277e80 + f64.const -inf f64.ne if i32.const 0 i32.const 1120 - i32.const 355 + i32.const 280 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13184 + i32.const 8736 call $~lib/number/F64.parseFloat - f64.const 3271239291709782092398754e243 + f64.const 0 f64.ne if i32.const 0 i32.const 1120 - i32.const 356 + i32.const 281 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13296 + i32.const 8784 call $~lib/number/F64.parseFloat - local.tee $1 - local.get $1 - f64.eq + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 359 + i32.const 282 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13328 + i32.const 8832 call $~lib/number/F64.parseFloat - f64.const 0.1 + f64.const inf f64.ne if i32.const 0 i32.const 1120 - i32.const 360 + i32.const 283 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1808 - i32.const 13360 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 13392 - call $~lib/string/String.__eq - i32.eqz + i32.const 8864 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 364 - i32.const 3 + i32.const 284 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__ne - i32.eqz + i32.const 8912 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 365 - i32.const 3 + i32.const 285 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + i32.const 8960 + call $~lib/number/F64.parseFloat + f64.const -inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 367 + i32.const 286 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + i32.const 9008 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 369 + i32.const 287 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1712 - i32.const 0 - call $~lib/string/String.__ne - i32.eqz + i32.const 9056 + call $~lib/number/F64.parseFloat + f64.const inf + f64.ne if i32.const 0 i32.const 1120 - i32.const 371 + i32.const 288 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 1712 - call $~lib/string/String.__ne - i32.eqz + i32.const 9104 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 373 + i32.const 289 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 13360 - call $~lib/string/String.__ne - i32.eqz + i32.const 9136 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 375 + i32.const 290 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 - call $~lib/string/String.__eq - i32.eqz + i32.const 9184 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 376 + i32.const 291 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13424 - i32.const 13456 - call $~lib/string/String.__ne - i32.eqz + i32.const 9232 + call $~lib/number/F64.parseFloat + f64.const 0 + f64.ne if i32.const 0 i32.const 1120 - i32.const 378 + i32.const 295 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13424 - i32.const 13424 - call $~lib/string/String.__eq - i32.eqz + i32.const 9424 + call $~lib/number/F64.parseFloat + f64.const 1e-323 + f64.ne if i32.const 0 i32.const 1120 - i32.const 379 + i32.const 308 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13488 - i32.const 13520 - call $~lib/string/String.__ne - i32.eqz + i32.const 9616 + call $~lib/number/F64.parseFloat + f64.const 2.225073858507202e-308 + f64.ne if i32.const 0 i32.const 1120 - i32.const 381 + i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13552 - i32.const 13584 - call $~lib/string/String.__ne - i32.eqz + i32.const 9808 + i32.const 9968 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 10128 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 10288 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10448 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/number/F64.parseFloat + f64.const 1797693134862315708145274e284 + f64.ne if i32.const 0 i32.const 1120 - i32.const 383 + i32.const 315 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13616 - i32.const 13616 - call $~lib/string/String.__eq - i32.eqz + i32.const 10608 + call $~lib/number/F64.parseFloat + f64.const 9.753531888799502e-104 + f64.ne if i32.const 0 i32.const 1120 - i32.const 384 + i32.const 333 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13616 - i32.const 13664 - call $~lib/string/String.__ne - i32.eqz + i32.const 10720 + call $~lib/number/F64.parseFloat + f64.const 0.5961860348131807 + f64.ne if i32.const 0 i32.const 1120 - i32.const 386 + i32.const 334 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13712 - i32.const 13760 - call $~lib/string/String.__ne - i32.eqz + i32.const 10832 + call $~lib/number/F64.parseFloat + f64.const 0.18150131692180388 + f64.ne if i32.const 0 i32.const 1120 - i32.const 388 + i32.const 335 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13360 - i32.const 1808 - call $~lib/string/String.__gt - i32.eqz + i32.const 10944 + call $~lib/number/F64.parseFloat + f64.const 0.42070823575344535 + f64.ne if i32.const 0 i32.const 1120 - i32.const 390 + i32.const 336 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 1808 - call $~lib/string/String.__gt - i32.eqz + i32.const 11056 + call $~lib/number/F64.parseFloat + f64.const 0.6654686306516261 + f64.ne if i32.const 0 i32.const 1120 - i32.const 391 + i32.const 337 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13840 - call $~lib/string/String.__gte - i32.eqz + i32.const 11168 + call $~lib/number/F64.parseFloat + f64.const 0.6101852922970868 + f64.ne if i32.const 0 i32.const 1120 - i32.const 392 + i32.const 338 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13392 - call $~lib/string/String.__gt - i32.eqz + i32.const 11280 + call $~lib/number/F64.parseFloat + f64.const 0.7696695208236968 + f64.ne if i32.const 0 i32.const 1120 - i32.const 393 + i32.const 339 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 - i32.const 13392 - call $~lib/string/String.__lt + i32.const 11392 + call $~lib/number/F64.parseFloat + f64.const 0.25050653222286823 + f64.ne if i32.const 0 i32.const 1120 - i32.const 394 + i32.const 340 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - call $~lib/string/String.__gt - i32.eqz + i32.const 11504 + call $~lib/number/F64.parseFloat + f64.const 0.2740037230228005 + f64.ne if i32.const 0 i32.const 1120 - i32.const 396 + i32.const 341 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 - call $~lib/string/String.__lt - i32.eqz + i32.const 11616 + call $~lib/number/F64.parseFloat + f64.const 0.20723093500497428 + f64.ne if i32.const 0 i32.const 1120 - i32.const 397 + i32.const 342 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - call $~lib/string/String.__gte - i32.eqz + i32.const 11728 + call $~lib/number/F64.parseFloat + f64.const 7.900280238081605 + f64.ne if i32.const 0 i32.const 1120 - i32.const 398 + i32.const 343 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 - call $~lib/string/String.__lte - i32.eqz + i32.const 11840 + call $~lib/number/F64.parseFloat + f64.const 98.22860653737297 + f64.ne if i32.const 0 i32.const 1120 - i32.const 399 + i32.const 344 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - call $~lib/string/String.__lt + i32.const 11952 + call $~lib/number/F64.parseFloat + f64.const 746.894972319037 + f64.ne if i32.const 0 i32.const 1120 - i32.const 400 + i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 2336 - call $~lib/string/String.__gt + i32.const 12064 + call $~lib/number/F64.parseFloat + f64.const 1630.2683202827284 + f64.ne if i32.const 0 i32.const 1120 - i32.const 401 + i32.const 346 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__lt + i32.const 12176 + call $~lib/number/F64.parseFloat + f64.const 46371.68629719171 + f64.ne if i32.const 0 i32.const 1120 - i32.const 402 + i32.const 347 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__gt + i32.const 12288 + call $~lib/number/F64.parseFloat + f64.const 653780.5944497711 + f64.ne if i32.const 0 i32.const 1120 - i32.const 403 + i32.const 348 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__gte - i32.eqz + i32.const 12400 + call $~lib/number/F64.parseFloat + f64.const 234632.43565024371 + f64.ne if i32.const 0 i32.const 1120 - i32.const 404 + i32.const 349 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String.__lte - i32.eqz + i32.const 12512 + call $~lib/number/F64.parseFloat + f64.const 97094817.16420048 + f64.ne if i32.const 0 i32.const 1120 - i32.const 405 + i32.const 350 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - i32.const 13872 - call $~lib/string/String.__lt - i32.eqz + i32.const 12624 + call $~lib/number/F64.parseFloat + f64.const 499690852.20518744 + f64.ne if i32.const 0 i32.const 1120 - i32.const 407 + i32.const 351 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 3456 - call $~lib/string/String.__gt - i32.eqz + i32.const 12736 + call $~lib/number/F64.parseFloat + f64.const 7925201200557245595648 + f64.ne if i32.const 0 i32.const 1120 - i32.const 408 + i32.const 352 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13872 - call $~lib/string/String.__lt + i32.const 12848 + call $~lib/number/F64.parseFloat + f64.const 6096564585983177528398588e5 + f64.ne if i32.const 0 i32.const 1120 - i32.const 409 + i32.const 353 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13904 - call $~lib/string/String.__gt + i32.const 12960 + call $~lib/number/F64.parseFloat + f64.const 4800416117477028695992383e42 + f64.ne if i32.const 0 i32.const 1120 - i32.const 410 + i32.const 354 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13872 - call $~lib/string/String.__gt - i32.eqz + i32.const 13072 + call $~lib/number/F64.parseFloat + f64.const 8524829079817968137287277e80 + f64.ne if i32.const 0 i32.const 1120 - i32.const 411 + i32.const 355 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13904 - call $~lib/string/String.__lt - i32.eqz + i32.const 13184 + call $~lib/number/F64.parseFloat + f64.const 3271239291709782092398754e243 + f64.ne if i32.const 0 i32.const 1120 - i32.const 412 + i32.const 356 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__lt + i32.const 13296 + call $~lib/number/F64.parseFloat + local.tee $1 + local.get $1 + f64.eq if i32.const 0 i32.const 1120 - i32.const 413 + i32.const 359 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__gt + i32.const 13328 + call $~lib/number/F64.parseFloat + f64.const 0.1 + f64.ne if i32.const 0 i32.const 1120 - i32.const 414 + i32.const 360 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__lte + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.const 13360 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 13392 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 415 - i32.const 1 + i32.const 364 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 416 - i32.const 1 + i32.const 365 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13936 - call $~lib/string/String.__gte + i32.const 1712 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 417 + i32.const 367 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13936 - i32.const 13872 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 0 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 418 + i32.const 369 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13936 - call $~lib/string/String.__lte + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1712 + i32.const 0 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 419 + i32.const 371 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3456 - i32.const 3456 - call $~lib/string/String.__eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 1712 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 420 + i32.const 373 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13904 - i32.const 13904 - call $~lib/string/String.__eq + i32.const 1808 + i32.const 13360 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 421 + i32.const 375 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 - i32.const 2400 + i32.const 1808 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 422 + i32.const 376 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2400 - i32.const 13968 + i32.const 13424 + i32.const 13456 call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 424 + i32.const 378 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14000 - i32.const 14000 + i32.const 13424 + i32.const 13424 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 425 + i32.const 379 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14032 - i32.const 14000 + i32.const 13488 + i32.const 13520 call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 427 + i32.const 381 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 65377 - call $~lib/string/String.fromCodePoint - local.tee $4 - i32.store offset=64 - global.get $~lib/memory/__stack_pointer - i32.const 55296 - call $~lib/string/String.fromCodePoint - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - i32.const 56322 - call $~lib/string/String.fromCodePoint - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $6 - local.get $0 - call $~lib/string/String.__concat - local.tee $0 - i32.store offset=68 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - call $~lib/string/String.__gt + i32.const 13552 + i32.const 13584 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 432 - i32.const 3 + i32.const 383 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2396 - i32.load - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne + i32.const 13616 + i32.const 13616 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 435 + i32.const 384 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 100 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq + i32.const 13616 + i32.const 13664 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 386 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13712 + i32.const 13760 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 437 + i32.const 388 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 13360 i32.const 1808 - i32.const 0 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 438 + i32.const 390 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 13808 i32.const 1808 - i32.const 1 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__eq + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 439 + i32.const 391 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 2 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.const 13808 i32.const 13840 - call $~lib/string/String.__eq + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 440 + i32.const 392 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 3 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14112 - call $~lib/string/String.__eq + i32.const 13808 + i32.const 13392 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 441 + i32.const 393 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 13808 i32.const 13392 - i32.const 4 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14144 - call $~lib/string/String.__eq + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 394 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2336 + i32.const 1712 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 442 + i32.const 396 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 5 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14192 - call $~lib/string/String.__eq + i32.const 1712 + i32.const 2336 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 1120 - i32.const 443 + i32.const 397 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 6 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14224 - call $~lib/string/String.__eq + i32.const 2336 + i32.const 1712 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 444 + i32.const 398 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 7 - call $~lib/string/String#repeat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14256 - call $~lib/string/String.__eq + i32.const 1712 + i32.const 2336 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 445 + i32.const 399 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 2336 i32.const 1712 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 400 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1712 + i32.const 2336 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 401 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 1712 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.const 1712 - call $~lib/string/String.__eq - i32.eqz + call $~lib/string/String.__lt if i32.const 0 i32.const 1120 - i32.const 447 + i32.const 402 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1712 i32.const 1712 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4592 - call $~lib/string/String.__eq - i32.eqz + call $~lib/string/String.__gt if i32.const 0 i32.const 1120 - i32.const 448 + i32.const 403 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 4592 i32.const 1712 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.const 1712 - call $~lib/string/String.__eq + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 449 + i32.const 404 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 i32.const 1712 i32.const 1712 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4592 - call $~lib/string/String.__eq + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 450 + i32.const 405 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 4560 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq + i32.const 3456 + i32.const 13872 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 1120 - i32.const 451 + i32.const 407 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2336 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4592 - call $~lib/string/String.__eq + i32.const 13872 + i32.const 3456 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 452 + i32.const 408 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq - i32.eqz + i32.const 13904 + i32.const 13872 + call $~lib/string/String.__lt if i32.const 0 i32.const 1120 - i32.const 453 + i32.const 409 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 13872 + i32.const 13904 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 410 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 13392 - i32.const 13392 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq + i32.const 13904 + i32.const 13872 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 454 + i32.const 411 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 - i32.const 4560 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14336 - call $~lib/string/String.__eq + i32.const 13872 + i32.const 13904 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 1120 - i32.const 455 + i32.const 412 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14368 - call $~lib/string/String.__eq - i32.eqz + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__lt if i32.const 0 i32.const 1120 - i32.const 456 + i32.const 413 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14400 - i32.const 14432 - i32.const 4592 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14368 - call $~lib/string/String.__eq - i32.eqz + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__gt if i32.const 0 i32.const 1120 - i32.const 457 + i32.const 414 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14464 - i32.const 14496 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14528 - call $~lib/string/String.__eq + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 458 + i32.const 415 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14464 - i32.const 1712 - call $~lib/string/String#replace - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 13392 - call $~lib/string/String.__eq + i32.const 13904 + i32.const 13904 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 459 + i32.const 416 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 2336 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq - i32.eqz + i32.const 13872 + i32.const 13936 + call $~lib/string/String.__gte if i32.const 0 i32.const 1120 - i32.const 461 + i32.const 417 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 4560 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq + i32.const 13936 + i32.const 13872 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 462 + i32.const 418 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 2336 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14496 - call $~lib/string/String.__eq + i32.const 13872 + i32.const 13936 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 464 + i32.const 419 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14560 - i32.const 2336 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14608 + i32.const 3456 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 465 + i32.const 420 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 13392 - i32.const 13392 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2544 + i32.const 13904 + i32.const 13904 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 466 + i32.const 421 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14640 - i32.const 1808 - i32.const 14608 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14688 + i32.const 2400 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 467 + i32.const 422 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2544 - i32.const 13392 - i32.const 14496 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14736 - call $~lib/string/String.__eq + i32.const 2400 + i32.const 13968 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 468 + i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14768 - i32.const 14800 - i32.const 14496 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14832 + i32.const 14000 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 469 + i32.const 425 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2912 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2336 - call $~lib/string/String.__eq + i32.const 14032 + i32.const 14000 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 470 + i32.const 427 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2912 - i32.const 14864 - i32.const 14496 - call $~lib/string/String#replaceAll + global.get $~lib/memory/__stack_pointer + i32.const 65377 + call $~lib/string/String.fromCodePoint + local.tee $4 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 55296 + call $~lib/string/String.fromCodePoint + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + i32.const 56322 + call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $6 + local.get $0 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2912 - call $~lib/string/String.__eq + i32.store offset=4 + local.get $4 + local.get $0 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 471 - i32.const 1 + i32.const 432 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 14896 - i32.const 4592 - call $~lib/string/String#replaceAll - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14928 - call $~lib/string/String.__eq - i32.eqz + i32.const 2396 + i32.load + i32.const 1 + i32.shr_u + i32.const 3 + i32.ne if i32.const 0 i32.const 1120 - i32.const 472 + i32.const 435 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13392 - i32.const 13392 - i32.const 4592 - call $~lib/string/String#replaceAll + i32.const 1712 + i32.const 100 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 473 + i32.const 437 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14304 - i32.const 4560 - i32.const 4592 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 0 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14960 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 474 + i32.const 438 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 1712 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 1 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 476 + i32.const 439 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - i32.const 4592 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 2 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 13840 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 477 + i32.const 440 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 4592 - i32.const 1712 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 3 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 14112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 478 + i32.const 441 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 - i32.const 1712 - i32.const 1712 - call $~lib/string/String#replaceAll + i32.const 13392 + i32.const 4 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4592 + i32.const 14144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 479 + i32.const 442 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2336 - i32.const 4560 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 5 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 4560 + i32.const 14192 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 480 + i32.const 443 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 2816 - i32.const 4560 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 6 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 14224 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 481 + i32.const 444 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1712 - i32.const 4592 - call $~lib/string/String#replaceAll + i32.const 1808 + i32.const 7 + call $~lib/string/String#repeat local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14992 + i32.const 14256 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 482 + i32.const 445 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2336 i32.const 1712 i32.const 1712 - call $~lib/string/String#replaceAll + i32.const 1712 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2336 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 483 + i32.const 447 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15040 - i32.const 1808 - i32.const 15072 - call $~lib/string/String#replaceAll + i32.const 1712 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15104 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 486 + i32.const 448 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13392 - i32.const 13392 - i32.const 15152 - call $~lib/string/String#replaceAll + i32.const 4592 + i32.const 4592 + i32.const 1712 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15152 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 487 + i32.const 449 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14112 - i32.const 1808 - i32.const 15184 - call $~lib/string/String#replaceAll + i32.const 4592 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15216 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 488 + i32.const 450 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14112 - i32.const 13840 - i32.const 15072 - call $~lib/string/String#replaceAll + i32.const 2336 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15264 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 489 + i32.const 451 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15296 - global.set $std/string/str - global.get $~lib/memory/__stack_pointer - i32.const 15296 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - i32.const 15296 - i32.const 0 - call $~lib/string/String#slice@varargs + i32.const 2336 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 493 + i32.const 452 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/string/String#slice@varargs + i32.const 2336 + i32.const 2912 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15344 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 494 + i32.const 453 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -5 - call $~lib/string/String#slice@varargs + i32.const 2336 + i32.const 13392 + i32.const 13392 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15376 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1120 - i32.const 495 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 7 - call $~lib/string/String#slice + i32.const 1120 + i32.const 454 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 14304 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15408 + i32.const 14336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 496 + i32.const 455 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -11 - i32.const -6 - call $~lib/string/String#slice + i32.const 2336 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15440 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 497 + i32.const 456 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 3 - call $~lib/string/String#slice + i32.const 14400 + i32.const 14432 + i32.const 4592 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 14368 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 498 + i32.const 457 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const -1 - call $~lib/string/String#slice + i32.const 2336 + i32.const 14464 + i32.const 14496 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15472 + i32.const 14528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 499 + i32.const 458 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/string/String#substr@varargs + i32.const 2336 + i32.const 14464 + i32.const 1712 + call $~lib/string/String#replace local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 13392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 501 + i32.const 459 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/string/String#substr@varargs + i32.const 1712 + i32.const 1712 + i32.const 2336 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15344 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 502 + i32.const 461 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -5 - call $~lib/string/String#substr@varargs + i32.const 2336 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15376 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 503 + i32.const 462 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 7 - call $~lib/string/String#substr + i32.const 2544 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15520 + i32.const 14496 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 504 + i32.const 464 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -11 - i32.const -6 - call $~lib/string/String#substr + i32.const 14560 + i32.const 2336 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 505 + i32.const 465 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 3 - call $~lib/string/String#substr + i32.const 2544 + i32.const 13392 + i32.const 13392 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15568 + i32.const 2544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 506 + i32.const 466 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const -1 - call $~lib/string/String#substr + i32.const 14640 + i32.const 1808 + i32.const 14608 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 14688 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 507 + i32.const 467 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 100 - call $~lib/string/String#substr + i32.const 2544 + i32.const 13392 + i32.const 14496 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 14736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 508 + i32.const 468 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/string/String#substr + i32.const 14768 + i32.const 14800 + i32.const 14496 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15600 + i32.const 14832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 509 + i32.const 469 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const -3 - call $~lib/string/String#substr + i32.const 2336 + i32.const 2912 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 510 + i32.const 470 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/string/String#substring@varargs + i32.const 2912 + i32.const 14864 + i32.const 14496 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 2912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 512 + i32.const 471 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/string/String#substring@varargs + i32.const 2336 + i32.const 14896 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 14928 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 513 + i32.const 472 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -5 - call $~lib/string/String#substring@varargs + i32.const 13392 + i32.const 13392 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 514 + i32.const 473 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 7 - call $~lib/string/String#substring + i32.const 14304 + i32.const 4560 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15408 + i32.const 14960 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 515 + i32.const 474 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const -11 - i32.const -6 - call $~lib/string/String#substring + i32.const 1712 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -16788,43 +17650,35 @@ if i32.const 0 i32.const 1120 - i32.const 516 + i32.const 476 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 3 - call $~lib/string/String#substring + i32.const 1712 + i32.const 1712 + i32.const 4592 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15632 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 517 + i32.const 477 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const -1 - call $~lib/string/String#substring + i32.const 4592 + i32.const 4592 + i32.const 1712 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 @@ -16836,1850 +17690,1913 @@ if i32.const 0 i32.const 1120 - i32.const 518 + i32.const 478 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 100 - call $~lib/string/String#substring + i32.const 4592 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 15296 + i32.const 4592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 519 + i32.const 479 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/string/String#substring + i32.const 2336 + i32.const 2336 + i32.const 4560 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 520 + i32.const 480 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - global.get $std/string/str - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const -3 - call $~lib/string/String#substring + i32.const 2336 + i32.const 2816 + i32.const 4560 + call $~lib/string/String#replaceAll local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2912 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 521 + i32.const 481 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 2336 i32.const 1712 - i32.const 0 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 4592 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 14992 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 527 - i32.const 3 + i32.const 482 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer + i32.const 2336 i32.const 1712 i32.const 1712 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length + i32.const 2336 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 529 - i32.const 3 + i32.const 483 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.const 2624 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 15040 + i32.const 1808 + i32.const 15072 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15104 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 531 - i32.const 3 + i32.const 486 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 7632 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 13392 + i32.const 13392 + i32.const 15152 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 15840 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.store + local.get $0 + i32.const 15152 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 533 - i32.const 3 + i32.const 487 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 14112 + i32.const 1808 + i32.const 15184 + call $~lib/string/String#replaceAll + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else + i32.const 15216 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const 1120 + i32.const 488 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end + i32.const 14112 + i32.const 13840 + i32.const 15072 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15264 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 535 - i32.const 3 + i32.const 489 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 15296 + global.set $std/string/str + global.get $~lib/memory/__stack_pointer + i32.const 15296 + i32.store offset=4 i32.const 1 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 15872 - i32.const 15920 - call $~lib/string/String#split@varargs - local.tee $0 - i32.store offset=72 + i32.const 15296 + i32.const 0 + call $~lib/string/String#slice@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15296 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 537 - i32.const 3 + i32.const 493 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15952 - i32.const 2624 - call $~lib/string/String#split@varargs + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#slice@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + local.get $0 + i32.const 15344 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 539 - i32.const 3 + i32.const 494 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15984 - i32.const 2624 - call $~lib/string/String#split@varargs + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#slice@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15376 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 541 - i32.const 3 + i32.const 495 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 16016 - i32.const 2624 - call $~lib/string/String#split@varargs + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#slice + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1712 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15408 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 543 - i32.const 3 + i32.const 496 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - call $~lib/string/String#split@varargs + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#slice + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + local.get $0 + i32.const 15440 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 545 - i32.const 3 + i32.const 497 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - i32.const 0 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 547 - i32.const 3 + i32.const 498 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - i32.const 1 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15472 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 549 - i32.const 3 + i32.const 499 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 - i32.const 1 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/string/String#substr@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15296 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 551 - i32.const 3 + i32.const 501 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - i32.const 4 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#substr@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 - end + i32.const 15344 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 553 - i32.const 3 + i32.const 502 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 2336 - i32.const 1712 - i32.const -1 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#substr@varargs + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else + i32.const 15376 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const 1120 + i32.const 503 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15520 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 555 - i32.const 3 + i32.const 504 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 15840 - i32.const 2624 - i32.const -1 - call $~lib/string/String#split + global.get $std/string/str local.tee $0 - i32.store offset=72 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#substr + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - call $~lib/string/String.__eq - else + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + i32.const 1120 + i32.const 505 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 13360 - call $~lib/string/String.__eq - else - i32.const 0 - end - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15568 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 557 - i32.const 3 + i32.const 506 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 10 - call $~lib/util/number/itoa32 + i32.const -1 + call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 562 + i32.const 507 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 100 + call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 563 + i32.const 508 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17792 + i32.const 15600 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 564 + i32.const 509 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const -3 + call $~lib/string/String#substr local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17824 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 565 + i32.const 510 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/string/String#substring@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2400 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 566 + i32.const 512 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1000 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/string/String#substring@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17856 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 567 + i32.const 513 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -5 + call $~lib/string/String#substring@varargs local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14000 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 568 + i32.const 514 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17888 + i32.const 15408 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 569 + i32.const 515 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17920 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 570 + i32.const 516 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1111111 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17952 + i32.const 15632 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 571 + i32.const 517 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234567 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18000 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 572 + i32.const 518 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345678 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 100 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18048 + i32.const 15296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 573 + i32.const 519 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456789 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18096 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 574 + i32.const 520 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483646 - i32.const 10 - call $~lib/util/number/itoa32 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const -3 + call $~lib/string/String#substring local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18144 + i32.const 2912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 575 + i32.const 521 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 0 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18192 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 576 - i32.const 1 + i32.const 527 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 1712 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18240 - call $~lib/string/String.__eq - i32.eqz + call $~lib/array/Array#get:length if i32.const 0 i32.const 1120 - i32.const 577 - i32.const 1 + i32.const 529 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18288 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 578 - i32.const 1 + i32.const 531 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -128 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 7632 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18320 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 15840 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 580 - i32.const 1 + i32.const 533 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -32768 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18352 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 581 - i32.const 1 + i32.const 535 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/itoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15872 + i32.const 15920 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18240 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 582 - i32.const 1 + i32.const 537 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15952 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 584 - i32.const 1 + i32.const 539 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1000 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 15984 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18384 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1120 - i32.const 585 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1712 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 18192 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 586 - i32.const 1 + i32.const 541 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 16016 + i32.const 2624 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18416 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1120 - i32.const 587 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 end - i32.const -1 - i32.const 10 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 18464 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 588 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 0 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3392 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 592 - i32.const 1 + i32.const 543 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + call $~lib/string/String#split@varargs + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - i32.const 1120 - i32.const 593 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 end - i32.const 8 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 17792 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 594 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 12 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 14464 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 595 - i32.const 1 + i32.const 545 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 123 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 0 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18512 - call $~lib/string/String.__eq - i32.eqz + call $~lib/array/Array#get:length if i32.const 0 i32.const 1120 - i32.const 596 - i32.const 1 + i32.const 547 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1234 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18544 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 597 - i32.const 1 + i32.const 549 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12345 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + i32.const 1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18576 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 598 - i32.const 1 + i32.const 551 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 123456 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const 4 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18608 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 599 - i32.const 1 + i32.const 553 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1111111 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.const 1712 + i32.const -1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18640 - call $~lib/string/String.__eq + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 1120 - i32.const 600 - i32.const 1 + i32.const 555 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1234567 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.const 2624 + i32.const -1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=72 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18672 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1808 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13360 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 601 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 12345678 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 18704 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 14464 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 602 - i32.const 1 - call $~lib/builtins/abort - unreachable end - i32.const 123456789 - i32.const 16 - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 18736 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 603 - i32.const 1 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 2147483646 - i32.const 16 - call $~lib/util/number/utoa32 + i32.const 0 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18784 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 604 + i32.const 562 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 16 - call $~lib/util/number/utoa32 + i32.const 1 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18832 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 605 + i32.const 563 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/utoa32 + i32.const 8 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18880 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 606 + i32.const 564 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 16 - call $~lib/util/number/utoa32 + i32.const 12 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18928 + i32.const 17824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 607 + i32.const 565 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 16 + i32.const 123 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 609 + i32.const 566 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -4096 - i32.const 16 + i32.const -1000 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer @@ -18692,2615 +19609,2652 @@ if i32.const 0 i32.const 1120 - i32.const 610 + i32.const 567 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 16 + i32.const 1234 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18832 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 611 + i32.const 568 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483647 - i32.const 16 + i32.const 12345 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18976 + i32.const 17888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 612 + i32.const 569 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -268435455 - i32.const 16 + i32.const 123456 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19024 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 613 + i32.const 570 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 + i32.const 1111111 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19072 + i32.const 17952 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 614 + i32.const 571 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 + i32.const 1234567 + i32.const 10 call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19072 + i32.const 18000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 615 + i32.const 572 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const 12345678 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 18048 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 619 + i32.const 573 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const 123456789 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 18096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 620 + i32.const 574 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const 2147483646 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 13904 + i32.const 18144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 621 + i32.const 575 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const 2147483647 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19120 + i32.const 18192 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 622 + i32.const 576 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19152 + i32.const 18240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 623 + i32.const 577 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 29 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -1 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19184 + i32.const 18288 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 624 + i32.const 578 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 59 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -128 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19216 + i32.const 18320 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 625 + i32.const 580 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4095 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -32768 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19248 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 626 + i32.const 581 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 33554431 - i32.const 2 - call $~lib/util/number/utoa32 + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19296 + i32.const 18240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 627 + i32.const 582 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -12 - i32.const 2 + i32.const 0 + i32.const 10 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19376 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 628 + i32.const 584 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -4 - i32.const 2 + i32.const 1000 + i32.const 10 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19472 + i32.const 18384 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 629 + i32.const 585 i32.const 1 call $~lib/builtins/abort unreachable - end - i32.const -2 - i32.const 2 + end + i32.const 2147483647 + i32.const 10 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19568 + i32.const 18192 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 630 + i32.const 586 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 2 + i32.const -2147483648 + i32.const 10 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19664 + i32.const 18416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 631 + i32.const 587 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2047 - i32.const 2 - call $~lib/util/number/itoa32 + i32.const -1 + i32.const 10 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19760 + i32.const 18464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 633 + i32.const 588 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 3 + i32.const 0 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19808 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 637 + i32.const 592 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 4 + i32.const 1 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19872 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 638 + i32.const 593 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 5 + i32.const 8 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19936 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 639 + i32.const 594 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 8 + i32.const 12 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19984 + i32.const 14464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 640 + i32.const 595 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 11 + i32.const 123 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20032 + i32.const 18512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 641 + i32.const 596 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 15 + i32.const 1234 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20080 + i32.const 18544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 642 + i32.const 597 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 17 + i32.const 12345 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20128 + i32.const 18576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 643 + i32.const 598 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 21 + i32.const 123456 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20176 + i32.const 18608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 644 + i32.const 599 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 27 + i32.const 1111111 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20224 + i32.const 18640 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 645 + i32.const 600 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 32 + i32.const 1234567 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20272 + i32.const 18672 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 646 + i32.const 601 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 36 + i32.const 12345678 + i32.const 16 call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20320 + i32.const 18704 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 647 + i32.const 602 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 123456789 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 18736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 651 + i32.const 603 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 2147483646 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17824 + i32.const 18784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 652 + i32.const 604 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 123 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 2147483647 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 2400 + i32.const 18832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 653 + i32.const 605 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14000 + i32.const 18880 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 654 + i32.const 606 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12345 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 16 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17888 + i32.const 18928 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 655 + i32.const 607 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 123456 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 0 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 17920 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 656 + i32.const 609 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234567 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -4096 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18000 + i32.const 17856 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 657 + i32.const 610 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 99999999 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 2147483647 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20368 + i32.const 18832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 658 + i32.const 611 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 100000000 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -2147483647 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20416 + i32.const 18976 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 659 + i32.const 612 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -268435455 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18464 + i32.const 19024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 660 + i32.const 613 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20464 + i32.const 19072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 661 + i32.const 614 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const -2147483648 + i32.const 16 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20512 + i32.const 19072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 662 + i32.const 615 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 0 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20560 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 663 + i32.const 619 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 8687194767350 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 1 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20608 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 664 + i32.const 620 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 86871947673501 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 3 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20656 + i32.const 13904 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 665 + i32.const 621 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 7 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20704 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 666 + i32.const 622 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 14 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20768 + i32.const 19152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 667 + i32.const 623 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 19999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 29 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20832 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 668 + i32.const 624 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 129999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 59 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20896 + i32.const 19216 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 669 + i32.const 625 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1239999868719476735 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 4095 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20960 + i32.const 19248 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 670 + i32.const 626 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 10 - call $~lib/util/number/utoa64 + i32.const 33554431 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21024 + i32.const 19296 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 671 + i32.const 627 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -12 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 19376 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 673 + i32.const 628 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1234 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -4 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21088 + i32.const 19472 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 674 + i32.const 629 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -2 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18464 + i32.const 19568 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 675 + i32.const 630 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 2 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20464 + i32.const 19664 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 676 + i32.const 631 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -4294967295 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -2047 + i32.const 2 + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21120 + i32.const 19760 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 677 + i32.const 633 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 3 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 20512 + i32.const 19808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 678 + i32.const 637 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -68719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 4 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21168 + i32.const 19872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 679 + i32.const 638 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -868719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 5 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21216 + i32.const 19936 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 680 + i32.const 639 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 8 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21264 + i32.const 19984 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 681 + i32.const 640 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -19999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 11 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21328 + i32.const 20032 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 682 + i32.const 641 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9223372036854775807 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 15 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21392 + i32.const 20080 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 683 + i32.const 642 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 10 - call $~lib/util/number/itoa64 + i32.const -1 + i32.const 17 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21456 + i32.const 20128 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 684 + i32.const 643 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 16 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 21 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 20176 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 688 + i32.const 644 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1 - i32.const 16 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 27 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 20224 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 689 + i32.const 645 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12 - i32.const 16 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 32 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 14464 + i32.const 20272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 690 + i32.const 646 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234 - i32.const 16 - call $~lib/util/number/utoa64 + i32.const -1 + i32.const 36 + call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18544 + i32.const 20320 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 691 + i32.const 647 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1111111 - i32.const 16 + i64.const 0 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 18640 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 692 + i32.const 651 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 8589934591 - i32.const 16 + i64.const 12 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21520 + i32.const 17824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 693 + i32.const 652 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 5942249508321 - i32.const 16 + i64.const 123 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21568 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 694 + i32.const 653 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 76310993685985 - i32.const 16 + i64.const 1234 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21616 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 695 + i32.const 654 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 920735923817967 - i32.const 16 + i64.const 12345 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21664 + i32.const 17888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 696 + i32.const 655 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9927935178558959 - i32.const 16 + i64.const 123456 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21712 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 697 + i32.const 656 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 81985529216486895 - i32.const 16 + i64.const 1234567 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21760 + i32.const 18000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 698 + i32.const 657 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1311768467463790320 - i32.const 16 + i64.const 99999999 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21824 + i32.const 20368 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 699 + i32.const 658 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9223372036854775807 - i32.const 16 + i64.const 100000000 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21888 + i32.const 20416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 700 + i32.const 659 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 16 + i64.const 4294967295 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 21952 + i32.const 18464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 701 + i32.const 660 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775807 - i32.const 16 - call $~lib/util/number/itoa64 + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22016 + i32.const 20464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 703 + i32.const 661 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22080 + i32.const 20512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 704 + i32.const 662 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 + i64.const 868719476735 + i32.const 10 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22080 + i32.const 20560 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 705 + i32.const 663 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 2 + i64.const 8687194767350 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3392 + i32.const 20608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 709 + i32.const 664 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1 - i32.const 2 + i64.const 86871947673501 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 3456 + i32.const 20656 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 710 + i32.const 665 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 7 - i32.const 2 + i64.const 999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19120 + i32.const 20704 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 711 + i32.const 666 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 14 - i32.const 2 + i64.const 9999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19152 + i32.const 20768 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 712 + i32.const 667 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 59 - i32.const 2 + i64.const 19999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19216 + i32.const 20832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 713 + i32.const 668 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4095 - i32.const 2 + i64.const 129999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19248 + i32.const 20896 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 714 + i32.const 669 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 2 + i64.const 1239999868719476735 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 19664 + i32.const 20960 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 715 + i32.const 670 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 562949953421311 - i32.const 2 + i64.const -1 + i32.const 10 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22144 + i32.const 21024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 716 + i32.const 671 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 2 - call $~lib/util/number/utoa64 + i64.const 0 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22272 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 717 + i32.const 673 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -8589934591 - i32.const 2 + i64.const -1234 + i32.const 10 call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22432 + i32.const 21088 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 719 + i32.const 674 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 3 - call $~lib/util/number/utoa64 + i64.const 4294967295 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22528 + i32.const 18464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 723 + i32.const 675 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 4 - call $~lib/util/number/utoa64 + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22640 + i32.const 20464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 724 + i32.const 676 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 5 - call $~lib/util/number/utoa64 + i64.const -4294967295 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22736 + i32.const 21120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 725 + i32.const 677 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 8 - call $~lib/util/number/utoa64 + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22816 + i32.const 20512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 726 + i32.const 678 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 11 - call $~lib/util/number/utoa64 + i64.const -68719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22880 + i32.const 21168 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 727 + i32.const 679 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 15 - call $~lib/util/number/utoa64 + i64.const -868719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 22944 + i32.const 21216 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 728 + i32.const 680 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 17 - call $~lib/util/number/utoa64 + i64.const -999868719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23008 + i32.const 21264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 729 + i32.const 681 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 21 - call $~lib/util/number/utoa64 + i64.const -19999868719476735 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23072 + i32.const 21328 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 730 + i32.const 682 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 27 - call $~lib/util/number/utoa64 + i64.const 9223372036854775807 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23136 + i32.const 21392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 731 + i32.const 683 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 32 - call $~lib/util/number/utoa64 + i64.const -9223372036854775808 + i32.const 10 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23184 + i32.const 21456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 732 + i32.const 684 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 36 + i64.const 0 + i32.const 16 call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23232 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 733 + i32.const 688 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0 - call $~lib/util/number/dtoa + i64.const 1 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23280 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 736 + i32.const 689 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -0 - call $~lib/util/number/dtoa + i64.const 12 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23280 + i32.const 14464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 737 + i32.const 690 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const nan:0x8000000000000 - call $~lib/util/number/dtoa + i64.const 1234 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 7696 + i32.const 18544 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 738 + i32.const 691 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf - call $~lib/util/number/dtoa + i64.const 1111111 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23312 + i32.const 18640 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 739 + i32.const 692 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -inf - call $~lib/util/number/dtoa + i64.const 8589934591 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8960 + i32.const 21520 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 740 + i32.const 693 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.220446049250313e-16 - call $~lib/util/number/dtoa + i64.const 5942249508321 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8176 + i32.const 21568 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 741 + i32.const 694 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -2.220446049250313e-16 - call $~lib/util/number/dtoa + i64.const 76310993685985 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24336 + i32.const 21616 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 742 + i32.const 695 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1797693134862315708145274e284 - call $~lib/util/number/dtoa + i64.const 920735923817967 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8240 + i32.const 21664 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 743 + i32.const 696 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1797693134862315708145274e284 - call $~lib/util/number/dtoa + i64.const 9927935178558959 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24400 + i32.const 21712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 744 + i32.const 697 i32.const 1 call $~lib/builtins/abort unreachable end - f32.const 1.1920928955078125e-07 - call $~lib/util/number/dtoa + i64.const 81985529216486895 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24480 + i32.const 21760 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 745 + i32.const 698 i32.const 1 call $~lib/builtins/abort unreachable end - f32.const -1.1920928955078125e-07 - call $~lib/util/number/dtoa + i64.const 1311768467463790320 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24528 + i32.const 21824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 746 + i32.const 699 i32.const 1 call $~lib/builtins/abort unreachable end - f32.const 3402823466385288598117041e14 - call $~lib/util/number/dtoa + i64.const 9223372036854775807 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24576 + i32.const 21888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 747 + i32.const 700 i32.const 1 call $~lib/builtins/abort unreachable end - f32.const -3402823466385288598117041e14 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 16 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24624 + i32.const 21952 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 748 + i32.const 701 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4185580496821356722454785e274 - call $~lib/util/number/dtoa + i64.const -9223372036854775807 + i32.const 16 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24672 + i32.const 22016 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 749 + i32.const 703 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072014e-308 - call $~lib/util/number/dtoa + i64.const -9223372036854775808 + i32.const 16 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24736 + i32.const 22080 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 750 + i32.const 704 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4.940656e-318 - call $~lib/util/number/dtoa + i64.const -9223372036854775808 + i32.const 16 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24816 + i32.const 22080 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 751 + i32.const 705 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9060801153433600 - call $~lib/util/number/dtoa + i64.const 0 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24864 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 752 + i32.const 709 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4708356024711512064 - call $~lib/util/number/dtoa + i64.const 1 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24928 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 753 + i32.const 710 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9409340012568248320 - call $~lib/util/number/dtoa + i64.const 7 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 24992 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 754 + i32.const 711 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 5e-324 - call $~lib/util/number/dtoa + i64.const 14 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8320 + i32.const 19152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 755 + i32.const 712 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1 - call $~lib/util/number/dtoa + i64.const 59 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25056 + i32.const 19216 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 757 + i32.const 713 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.1 - call $~lib/util/number/dtoa + i64.const 4095 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 5280 + i32.const 19248 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 758 + i32.const 714 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1 - call $~lib/util/number/dtoa + i64.const 4294967295 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25088 + i32.const 19664 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 759 + i32.const 715 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -0.1 - call $~lib/util/number/dtoa + i64.const 562949953421311 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25120 + i32.const 22144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 760 + i32.const 716 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e6 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 2 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25152 + i32.const 22272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 762 + i32.const 717 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-06 - call $~lib/util/number/dtoa + i64.const -8589934591 + i32.const 2 + call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25200 + i32.const 22432 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 763 + i32.const 719 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e6 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 3 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25248 + i32.const 22528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 764 + i32.const 723 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-06 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 4 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25296 + i32.const 22640 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 765 + i32.const 724 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e7 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 5 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25344 + i32.const 22736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 766 + i32.const 725 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-07 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 8 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25392 + i32.const 22816 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 767 + i32.const 726 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.e+308 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 11 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 5568 + i32.const 22880 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 769 + i32.const 727 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1.e+308 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 15 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25424 + i32.const 22944 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 770 + i32.const 728 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf - call $~lib/util/number/dtoa + i64.const -1 + i32.const 17 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 23312 + i32.const 23008 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 771 + i32.const 729 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -inf - call $~lib/util/number/dtoa + i64.const -1 + i32.const 21 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 8960 + i32.const 23072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 772 + i32.const 730 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-308 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 27 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25472 + i32.const 23136 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 773 + i32.const 731 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-308 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 32 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25504 + i32.const 23184 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 774 + i32.const 732 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-323 - call $~lib/util/number/dtoa + i64.const -1 + i32.const 36 + call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25552 + i32.const 23232 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 775 + i32.const 733 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-323 + f64.const 0 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25584 + i32.const 23280 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 776 + i32.const 736 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0 + f64.const -0 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer @@ -21313,2100 +22267,1146 @@ if i32.const 0 i32.const 1120 - i32.const 777 + i32.const 737 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - f64.const 4294967272 - i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl + f64.const nan:0x8000000000000 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 i32.store - local.get $4 - i32.const 23344 local.get $0 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 25632 + i32.const 7696 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 779 + i32.const 738 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.2312145673456234e-08 + f64.const inf call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25680 + i32.const 23312 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 780 + i32.const 739 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 555555555.5555556 + f64.const -inf call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25744 + i32.const 8960 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 781 + i32.const 740 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.9999999999999999 + f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25808 + i32.const 8176 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 782 + i32.const 741 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1 + f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25056 + i32.const 24336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 783 + i32.const 742 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 12.34 + f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25872 + i32.const 8240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 784 + i32.const 743 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.3333333333333333 + f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25904 + i32.const 24400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 785 + i32.const 744 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1234e17 - call $~lib/util/number/dtoa + f32.const 1.1920928955078125e-07 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 25968 + i32.const 24480 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 786 + i32.const 745 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1234e18 - call $~lib/util/number/dtoa + f32.const -1.1920928955078125e-07 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26048 + i32.const 24528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 787 + i32.const 746 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.71828 - call $~lib/util/number/dtoa + f32.const 3402823466385288598117041e14 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26096 + i32.const 24576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 788 + i32.const 747 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.0271828 - call $~lib/util/number/dtoa + f32.const -3402823466385288598117041e14 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26144 + i32.const 24624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 789 + i32.const 748 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 271.828 + f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26192 + i32.const 24672 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 790 + i32.const 749 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.1e+128 + f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26240 + i32.const 24736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 791 + i32.const 750 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.1e-64 + f64.const 4.940656e-318 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26288 + i32.const 24816 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 792 + i32.const 751 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.000035689 + f64.const 9060801153433600 call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26336 + i32.const 24864 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 793 + i32.const 752 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26384 - i32.const 26416 - call $~lib/string/String#concat + f64.const 4708356024711512064 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26448 + i32.const 24928 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 820 + i32.const 753 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 26496 - call $~lib/string/String#concat + f64.const 9409340012568248320 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26496 + i32.const 24992 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 821 + i32.const 754 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26496 - i32.const 1712 - call $~lib/string/String#concat + f64.const 5e-324 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 26496 + i32.const 8320 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 822 + i32.const 755 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 - i32.const 1712 - call $~lib/string/String#concat + f64.const 1 + call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - i32.const 1712 + i32.const 25056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 823 + i32.const 757 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26528 - i32.const 26528 + f64.const 0.1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 5280 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 831 + i32.const 758 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26528 - i32.const 26528 + f64.const -1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25088 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 832 + i32.const 759 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26560 - i32.const 26560 + f64.const -0.1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 833 + i32.const 760 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 26592 - i32.const 26592 + f64.const 1e6 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 834 + i32.const 762 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/string/str - i32.const 59404 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 76 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $1 - i32.const 0 - i32.gt_s - local.tee $3 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - i32.store16 - local.get $3 - if - local.get $2 - local.get $1 - i32.store16 offset=2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - i32.shl - local.tee $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $3 - local.get $2 - if - local.get $3 - local.get $2 - local.get $4 - memory.copy - end - local.get $3 - i32.store - i32.const 16 - local.get $1 - call $~lib/rt/itcms/__new - local.tee $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - local.get $0 - i32.const 65535 - i32.gt_u - local.tee $2 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $2 - if + f64.const 1e-06 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1114111 - i32.gt_u + i32.store + local.get $0 + i32.const 25200 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1328 - i32.const 39 - i32.const 7 + i32.const 1120 + i32.const 763 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 + f64.const -1e6 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 65536 - i32.sub - local.tee $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or + i32.store + local.get $0 + i32.const 25248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 764 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-06 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or i32.store - else - local.get $1 local.get $0 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - if - i32.const 16048 - i32.const 16176 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if + i32.const 25296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 765 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e7 + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3392 - return - end - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 - select - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if + local.get $0 + i32.store + local.get $0 + i32.const 25344 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 766 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-07 + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end + local.get $0 + i32.store + local.get $0 + i32.const 25392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 767 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 + f64.const 1.e+308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 5568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 769 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const -1.e+308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 770 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const inf + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - local.get $4 - i32.add - local.get $2 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq + i32.const 23312 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 31 - local.get $2 - i32.clz - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $4 - i32.add - local.set $7 - local.get $2 - i64.extend_i32_u - local.set $3 - loop $while-continue|0 - local.get $1 - i32.const 2 - i32.ge_u - if - local.get $7 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.const 16640 - i32.add - i32.load - i32.store - local.get $3 - i64.const 8 - i64.shr_u - local.set $3 - br $while-continue|0 - end - end - local.get $1 - i32.const 1 - i32.and - if - local.get $7 - local.get $3 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.const 16640 - i32.add - i32.load16_u - i32.store16 - end - else - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$171 (result i32) - local.get $2 - i64.extend_i32_u - local.set $5 - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $5 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - br $__inlined_func$~lib/util/number/ulog_base$171 - end - local.get $1 - i64.extend_i32_s - local.tee $6 - local.set $3 - i32.const 1 - local.set $0 - loop $while-continue|01 - local.get $3 - local.get $5 - i64.le_u - if - local.get $5 - local.get $3 - i64.div_u - local.set $5 - local.get $3 - local.get $3 - i64.mul - local.set $3 - local.get $0 - i32.const 1 - i32.shl - local.set $0 - br $while-continue|01 - end - end - loop $while-continue|1 - local.get $5 - i64.const 0 - i64.ne - if - local.get $5 - local.get $6 - i64.div_u - local.set $5 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|1 - end - end - local.get $0 - i32.const 1 - i32.sub - end - local.tee $7 + i32.const 0 + i32.const 1120 + i32.const 771 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $4 - i32.add - local.get $2 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core + call $~lib/builtins/abort + unreachable end - end - local.get $4 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - if - i32.const 16048 - i32.const 16176 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if + f64.const -inf + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3392 - return - end - local.get $1 - i32.const 10 - i32.eq - if + local.get $0 + i32.store + local.get $0 + i32.const 8960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 772 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-308 + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.store + local.get $0 + i32.const 25472 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 773 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.tee $1 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 + f64.const -1e-308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $2 local.get $0 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - local.get $1 - i32.const 16 - i32.eq + i32.const 25504 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s + i32.const 0 + i32.const 1120 + i32.const 774 i32.const 1 - i32.add - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 1e-323 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 775 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $0 - i64.extend_i32_u - local.set $3 - loop $while-continue|0 - local.get $1 - i32.const 2 - i32.ge_u - if - local.get $2 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.const 16640 - i32.add - i32.load - i32.store - local.get $3 - i64.const 8 - i64.shr_u - local.set $3 - br $while-continue|0 - end - end - local.get $1 + call $~lib/builtins/abort + unreachable + end + f64.const -1e-323 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 776 i32.const 1 - i32.and - if - local.get $2 - local.get $3 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.const 16640 - i32.add - i32.load16_u - i32.store16 - end - else - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$175 (result i32) - local.get $0 - i64.extend_i32_u - local.set $4 - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $4 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - br $__inlined_func$~lib/util/number/ulog_base$175 - end - local.get $1 - i64.extend_i32_s - local.tee $5 - local.set $3 - i32.const 1 - local.set $2 - loop $while-continue|01 - local.get $3 - local.get $4 - i64.le_u - if - local.get $4 - local.get $3 - i64.div_u - local.set $4 - local.get $3 - local.get $3 - i64.mul - local.set $3 - local.get $2 - i32.const 1 - i32.shl - local.set $2 - br $while-continue|01 - end - end - loop $while-continue|1 - local.get $4 - i64.const 0 - i64.ne - if - local.get $4 - local.get $5 - i64.div_u - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 1 - i32.sub - end - local.tee $6 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 23280 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 777 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $6 - local.get $1 - call $~lib/util/number/utoa64_any_core + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 26636 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + f64.const 4294967272 + i32.const 0 + call $~lib/util/number/dtoa_core i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - if - i32.const 16048 - i32.const 16176 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.eqz - if + i32.shl + local.tee $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + local.get $4 + i32.const 23344 + local.get $0 + memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3392 - return - end - local.get $1 - i32.const 10 - i32.eq - if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 25632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 779 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.2312145673456234e-08 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 4294967295 - i64.le_u + i32.store + local.get $0 + i32.const 25680 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $6 + i32.const 0 + i32.const 1120 + i32.const 780 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $1 - local.get $6 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 555555555.5555556 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 781 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa64_dec_lut + call $~lib/builtins/abort + unreachable end - else - local.get $1 - i32.const 16 - i32.eq + f64.const 0.9999999999999999 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25808 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s + i32.const 0 + i32.const 1120 + i32.const 782 i32.const 1 - i32.add - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 783 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - loop $while-continue|0 - local.get $1 - i32.const 2 - i32.ge_u - if - local.get $3 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.const 16640 - i32.add - i32.load - i32.store - local.get $0 - i64.const 8 - i64.shr_u - local.set $0 - br $while-continue|0 - end - end - local.get $1 + call $~lib/builtins/abort + unreachable + end + f64.const 12.34 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25872 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 784 i32.const 1 - i32.and - if - local.get $3 - local.get $0 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.const 16640 - i32.add - i32.load16_u - i32.store16 - end - else - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$180 (result i32) - local.get $0 - local.set $2 - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - br $__inlined_func$~lib/util/number/ulog_base$180 - end - local.get $1 - i64.extend_i32_s - local.tee $5 - local.set $4 - i32.const 1 - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i64.ge_u - if - local.get $2 - local.get $4 - i64.div_u - local.set $2 - local.get $4 - local.get $4 - i64.mul - local.set $4 - local.get $3 - i32.const 1 - i32.shl - local.set $3 - br $while-continue|01 - end - end - loop $while-continue|1 - local.get $2 - i64.const 0 - i64.ne - if - local.get $2 - local.get $5 - i64.div_u - local.set $2 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|1 - end - end - local.get $3 - i32.const 1 - i32.sub - end - local.tee $6 + call $~lib/builtins/abort + unreachable + end + f64.const 0.3333333333333333 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25904 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 785 i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $0 - local.get $6 - local.get $1 - call $~lib/util/number/utoa64_any_core + call $~lib/builtins/abort + unreachable + end + f64.const 1234e17 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 25968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 786 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + f64.const 1234e18 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26048 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 787 + i32.const 1 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $1 - i32.const 2 - i32.lt_s - local.get $1 - i32.const 36 - i32.gt_s - i32.or - if - i32.const 16048 - i32.const 16176 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.eqz - if + f64.const 2.71828 + call $~lib/util/number/dtoa + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3392 - return - end - i64.const 0 - local.get $0 - i64.sub - local.get $0 - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - i32.const 1 - i32.shl - local.tee $4 - select - local.set $0 - local.get $1 - i32.const 10 - i32.eq - if local.get $0 - i64.const 4294967295 - i64.le_u + i32.store + local.get $0 + i32.const 26096 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $7 + i32.const 0 + i32.const 1120 + i32.const 788 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.add - local.get $1 - local.get $7 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $0 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 0.0271828 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26144 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 789 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.add - local.get $0 - local.get $1 - call $~lib/util/number/utoa64_dec_lut + call $~lib/builtins/abort + unreachable end - else - local.get $1 - i32.const 16 - i32.eq + f64.const 271.828 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26192 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s + i32.const 0 + i32.const 1120 + i32.const 790 i32.const 1 - i32.add - local.tee $1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e+128 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 791 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.add - local.set $7 - loop $while-continue|0 - local.get $1 - i32.const 2 - i32.ge_u - if - local.get $7 - local.get $1 - i32.const 2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 - i32.shl - i32.const 16640 - i32.add - i32.load - i32.store - local.get $0 - i64.const 8 - i64.shr_u - local.set $0 - br $while-continue|0 - end - end - local.get $1 + call $~lib/builtins/abort + unreachable + end + f64.const 1.1e-64 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26288 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 792 i32.const 1 - i32.and - if - local.get $7 - local.get $0 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.const 16640 - i32.add - i32.load16_u - i32.store16 - end - else - global.get $~lib/memory/__stack_pointer - block $__inlined_func$~lib/util/number/ulog_base$185 (result i32) - local.get $0 - local.set $2 - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - br $__inlined_func$~lib/util/number/ulog_base$185 - end - local.get $1 - i64.extend_i32_s - local.tee $6 - local.set $5 - i32.const 1 - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $5 - i64.ge_u - if - local.get $2 - local.get $5 - i64.div_u - local.set $2 - local.get $5 - local.get $5 - i64.mul - local.set $5 - local.get $3 - i32.const 1 - i32.shl - local.set $3 - br $while-continue|01 - end - end - loop $while-continue|1 - local.get $2 - i64.const 0 - i64.ne - if - local.get $2 - local.get $6 - i64.div_u - local.set $2 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|1 - end - end - local.get $3 - i32.const 1 - i32.sub - end - local.tee $7 + call $~lib/builtins/abort + unreachable + end + f64.const 0.000035689 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 26336 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 793 i32.const 1 - i32.shl - local.get $4 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.add - local.get $0 - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core + call $~lib/builtins/abort + unreachable end - end - local.get $4 - if - local.get $3 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 23280 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.0 + i32.const 26384 + i32.const 26416 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.store + local.get $0 + i32.const 26448 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 820 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1712 + i32.const 26496 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $0 - f64.sub - f64.const 0 - f64.ne + i32.const 26496 + call $~lib/string/String.__eq + i32.eqz if - i32.const 7696 - local.set $1 - local.get $0 - local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 8960 - i32.const 23312 - local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.0 + i32.const 0 + i32.const 1120 + i32.const 821 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $2 + i32.const 26496 + i32.const 1712 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 + local.get $0 i32.store - local.get $1 - i32.const 23344 - local.get $2 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/util/number/dtoa (param $0 f32) (result i32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 26636 - i32.lt_s - if - i32.const 59424 - i32.const 59472 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 23280 - local.set $2 - block $~lib/util/number/dtoa_impl|inlined.1 local.get $0 - f64.promote_f32 - local.tee $1 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne + i32.const 26496 + call $~lib/string/String.__eq + i32.eqz if - i32.const 7696 - local.set $2 - local.get $1 - local.get $1 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 8960 - i32.const 23312 - local.get $1 - f64.const 0 - f64.lt - select - local.set $2 - br $~lib/util/number/dtoa_impl|inlined.1 + i32.const 0 + i32.const 1120 + i32.const 822 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $3 + i32.const 1712 + i32.const 1712 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $2 + local.get $0 i32.store - local.get $2 - i32.const 23344 - local.get $3 - memory.copy + local.get $0 + i32.const 1712 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 823 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26528 + i32.const 26528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 831 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26528 + i32.const 26528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 832 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26560 + i32.const 26560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 833 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 26592 + i32.const 26592 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 834 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/string/str + i32.const 59404 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 76 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + i32.const 59424 + i32.const 59472 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/std/symbol.release.wat b/tests/compiler/std/symbol.release.wat index e2a9fd8b6d..ea31cd7f43 100644 --- a/tests/compiler/std/symbol.release.wat +++ b/tests/compiler/std/symbol.release.wat @@ -1,14 +1,14 @@ (module (type $0 (func (param i32 i32) (result i32))) - (type $1 (func)) + (type $1 (func (param i32) (result i32))) (type $2 (func (param i32 i32))) - (type $3 (func (param i32) (result i32))) + (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (result i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (param i32 i32 i32))) - (type $9 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (param i32 i32 i32) (result i32))) + (type $9 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) @@ -98,1592 +98,1559 @@ (data $33 (i32.const 2720) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\10\01\82\00\10A\02") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $~lib/symbol/stringToId - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $~lib/symbol/idToString - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $std/symbol/key1 - local.tee $0 + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $std/symbol/key2 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if local.get $0 - call $~lib/rt/itcms/__visit + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - global.get $std/symbol/key3 - local.tee $0 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + return end - global.get $std/symbol/key4 - local.tee $0 + local.get $0 + i32.eqz if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 1200 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end - i32.const 1328 - call $~lib/rt/itcms/__visit - i32.const 1536 - call $~lib/rt/itcms/__visit - i32.const 1648 - call $~lib/rt/itcms/__visit - i32.const 1136 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub local.tee $1 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.set $0 - loop $while-continue|0 + i32.eq + if local.get $0 - local.get $1 - i32.ne + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq if local.get $0 - i32.load offset=4 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 i32.const 3 + i32.eq i32.and - i32.const 3 - i32.ne if - i32.const 0 - i32.const 1200 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 end end ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - global.get $~lib/rt/itcms/iter + local.get $1 i32.eq if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - block $__inlined_func$~lib/rt/itcms/Object#unlink$246 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 + block $folding-inner0 + local.get $1 i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 35516 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$246 - end local.get $0 - i32.load offset=8 - local.tee $2 i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - else + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2720 - i32.load - i32.gt_u - if - i32.const 1328 - i32.const 1392 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end + i32.store + local.get $3 local.get $1 - i32.const 2 - i32.shl - i32.const 2724 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$88 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$88 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz return end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount + i32.const 35536 + i32.const 35584 i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1536 + i32.const 1584 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s if - i32.const 0 - i32.const 1472 - i32.const 270 - i32.const 14 + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $3 + i32.const 16 + i32.ge_u + if (result i32) + i32.const 606290984 + local.set $2 + i32.const -2048144777 + local.set $4 + i32.const 1640531535 + local.set $5 + local.get $1 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.set $7 + loop $while-continue|0 + local.get $1 + local.get $7 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $4 + local.get $1 + i32.load offset=4 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $4 + local.get $6 + local.get $1 + i32.load offset=8 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $6 + local.get $5 + local.get $1 + i32.load offset=12 + i32.const -2048144777 + i32.mul + i32.add + i32.const 13 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $5 + local.get $1 + i32.const 16 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $3 + local.get $2 + i32.const 1 + i32.rotl + local.get $4 + i32.const 7 + i32.rotl + i32.add + local.get $6 + i32.const 12 + i32.rotl + i32.add + local.get $5 + i32.const 18 + i32.rotl + i32.add + i32.add + else + local.get $3 + i32.const 374761393 + i32.add + end local.set $2 + local.get $0 local.get $3 - local.get $4 + i32.add i32.const 4 i32.sub + local.set $4 + loop $while-continue|1 + local.get $1 + local.get $4 + i32.le_u + if + local.get $2 + local.get $1 + i32.load + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $2 + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.add + local.set $0 + loop $while-continue|2 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $2 + local.get $1 + i32.load8_u + i32.const 374761393 + i32.mul + i32.add + i32.const 11 + i32.rotl + i32.const -1640531535 + i32.mul + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|2 + end + end + local.get $2 + local.get $2 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 i32.const 16 + i32.shr_u i32.xor + else + i32.const 0 end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s if - i32.const 0 - i32.const 1472 - i32.const 284 - i32.const 14 + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store local.get $1 local.get $0 - local.get $2 + call $"~lib/map/Map#has" + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + else + i32.const 0 + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1888 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1888 + i32.store + block $break|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 1 + i32.sub + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 + end + i32.const 1920 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1920 + i32.store + br $break|0 + end + i32.const 1968 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store + br $break|0 + end + i32.const 2032 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store + br $break|0 + end + i32.const 2080 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2080 + i32.store + br $break|0 + end + i32.const 2112 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2112 + i32.store + br $break|0 + end + i32.const 2160 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store + br $break|0 + end + i32.const 2192 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2192 + i32.store + br $break|0 + end + i32.const 2240 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2240 + i32.store + br $break|0 + end + i32.const 2272 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2272 + i32.store + br $break|0 + end + i32.const 2320 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2320 i32.store + br $break|0 end + i32.const 2368 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2368 + i32.store + br $break|0 + end + global.get $~lib/symbol/idToString + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $"~lib/map/Map#has" + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + call $"~lib/map/Map#get" + local.tee $1 + i32.store end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 2416 + local.get $1 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2464 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1472 - i32.const 201 - i32.const 14 + i32.const 1136 + i32.const 1200 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1472 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 i32.add - local.tee $4 - i32.load local.tee $2 - i32.const 1 - i32.and + i32.const 1073741820 + i32.gt_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add + i32.const 1136 + i32.const 1472 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1472 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1472 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1472 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) + local.tee $3 + i32.const 16 + i32.ge_u + if + local.get $2 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 i32.const 4 - i32.shr_u + i32.add + local.get $5 + i32.add + local.tee $5 + local.get $3 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock else - i32.const 31 - i32.const 1073741820 local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub + i32.load + i32.const -4 + i32.and + i32.add local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.load + i32.const -3 + i32.and + i32.store end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 local.set $3 + local.get $2 local.get $1 - i32.const 0 + global.get $~lib/rt/itcms/white + i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $3 i32.store offset=8 local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl + i32.const -4 + i32.and + i32.const 4 i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 + i32.add + global.set $~lib/rt/itcms/total local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $2 local.get $1 - i64.extend_i32_u - i64.lt_u + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if i32.const 0 i32.const 1472 - i32.const 382 + i32.const 268 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 + local.get $3 + i32.const -4 i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 local.tee $3 + i32.const 12 + i32.lt_u if + i32.const 0 + i32.const 1472 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) local.get $3 i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.shr_u + else + i32.const 31 + i32.const 1073741820 local.get $3 - local.get $1 - i32.const 16 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub local.tee $3 - i32.const 20 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 i32.lt_u + i32.and + i32.eqz if - return + i32.const 0 + i32.const 1472 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end local.get $1 + local.get $0 + local.get $2 i32.const 4 - i32.add + i32.shl local.get $3 i32.add - local.tee $3 i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size + i32.shl + i32.add local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + i32.load offset=96 + i32.eq if - unreachable - end - i32.const 35520 - i32.const 0 - i32.store - i32.const 37088 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 35520 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 35520 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 35520 - i32.const 37092 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 35520 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + local.tee $1 i32.load offset=4 - i32.const -4 + i32.const -2 + local.get $3 + i32.rotl i32.and - i32.eq + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 35516 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white local.get $0 - i32.load offset=4 - i32.const -4 + i32.load + i32.const -2 + local.get $2 + i32.rotl i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state + i32.store end - global.get $~lib/rt/itcms/visitCount - return end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1200 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 35516 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 35516 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1472 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.eqz if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + i32.load + local.tee $3 + i32.const 1 i32.and i32.eqz if i32.const 0 i32.const 1472 - i32.const 334 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl + local.get $1 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.load + i32.const -4 i32.and - local.tee $1 - if (result i32) + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.ctz + local.get $3 + i32.const 4 + i32.add local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.shl i32.add - i32.const 2 - i32.shl + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - i32.load offset=96 - else - local.get $0 + local.tee $4 i32.load - i32.const -1 - local.get $2 + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 i32.const 1 - i32.add - i32.shl i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else + i32.eqz + if i32.const 0 + i32.const 1472 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u if - i32.const 1136 - i32.const 1200 - i32.const 261 - i32.const 31 + i32.const 0 + i32.const 1472 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 + local.get $4 + local.get $1 + i32.const 4 i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + local.get $2 + i32.add + i32.ne if - i32.const 1136 + i32.const 0 i32.const 1472 - i32.const 461 - i32.const 29 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store local.get $2 - i32.const 12 - i32.le_u + i32.const 256 + i32.lt_u if (result i32) - i32.const 12 - else local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end i32.const 4 - local.get $4 - i32.load offset=1568 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 local.get $2 - i32.const 16 - i32.shl - i32.const 4 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u local.tee $3 + i32.const 7 + i32.sub + local.set $5 local.get $2 local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 + i32.const 4 + i32.sub + i32.shr_u i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.xor end + local.tee $2 + i32.const 16 + i32.lt_u local.get $5 - local.get $2 - i32.load - i32.const -4 + i32.const 23 + i32.lt_u i32.and - i32.gt_u + i32.eqz if i32.const 0 i32.const 1472 - i32.const 501 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 + local.get $0 local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add - i32.const 15 - i32.and + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 0 - i32.const 1472 - i32.const 361 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - local.get $6 - i32.const -4 - i32.and + local.get $0 local.get $5 - i32.sub - local.tee $3 - i32.const 16 - i32.ge_u + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$246 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 35516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$246 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - local.get $5 - local.get $6 - i32.const 2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and i32.or - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock else - local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add - local.get $2 + local.get $1 + i32.const 2720 i32.load - i32.const -4 - i32.and + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 2724 i32.add - local.tee $3 - local.get $3 i32.load - i32.const -3 + i32.const 32 i32.and - i32.store end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 local.set $3 local.get $2 - local.get $1 + i32.load offset=8 + local.set $1 + local.get $0 global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 + i32.eqz + i32.const 2 local.get $3 + select local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and i32.or i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 local.get $0 - memory.fill local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + i32.store offset=8 local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 i32.load offset=4 i32.const 3 i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -1846,23 +1813,8 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/symbol - ) - (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) - (local $1 i32) + (func $"~lib/map/Map<~lib/string/String,usize>#find" (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1881,208 +1833,71 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $~lib/util/hash/hashStr|inlined.0 (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - i32.const 0 - local.get $0 - i32.eqz - br_if $~lib/util/hash/hashStr|inlined.0 - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $1 - i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + loop $while-continue|0 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $3 - i32.const 16 - i32.ge_u - if (result i32) - i32.const 606290984 - local.set $2 - i32.const -2048144777 - local.set $4 - i32.const 1640531535 - local.set $5 + if local.get $1 - local.get $3 - i32.add - i32.const 16 - i32.sub - local.set $7 - loop $while-continue|0 - local.get $1 - local.get $7 - i32.le_u - if - local.get $2 - local.get $1 - i32.load - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $2 - local.get $4 - local.get $1 - i32.load offset=4 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $4 - local.get $6 - local.get $1 - i32.load offset=8 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $6 - local.get $5 - local.get $1 - i32.load offset=12 - i32.const -2048144777 - i32.mul - i32.add - i32.const 13 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $5 - local.get $1 - i32.const 16 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $3 - local.get $2 + i32.load offset=8 + local.tee $0 i32.const 1 - i32.rotl - local.get $4 - i32.const 7 - i32.rotl - i32.add - local.get $6 - i32.const 12 - i32.rotl - i32.add - local.get $5 - i32.const 18 - i32.rotl - i32.add - i32.add - else - local.get $3 - i32.const 374761393 - i32.add - end - local.set $2 - local.get $0 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.set $4 - loop $while-continue|1 - local.get $1 - local.get $4 - i32.le_u - if - local.get $2 + i32.and + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer local.get $1 i32.load - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.set $2 - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|1 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $2 + i32.const 1056 + call $~lib/string/String.__eq end - end - local.get $0 - local.get $3 - i32.add - local.set $0 - loop $while-continue|2 - local.get $0 - local.get $1 - i32.gt_u if - local.get $2 - local.get $1 - i32.load8_u - i32.const 374761393 - i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 11 - i32.rotl - i32.const -1640531535 - i32.mul - local.set $2 + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|2 + return end + local.get $0 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 end - local.get $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2097,168 +1912,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$88 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$88 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $"~lib/map/Map<~lib/string/String,usize>#find" (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - if - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -2266,7 +1922,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + local.get $2 local.get $0 i32.load offset=4 i32.and @@ -2274,147 +1930,110 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 loop $while-continue|0 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $0 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - global.get $~lib/memory/__stack_pointer local.get $1 + local.get $0 i32.load - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - local.get $2 - i32.const 1056 - call $~lib/string/String.__eq + i32.eq end if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 return end - local.get $0 + local.get $2 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|0 end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $"~lib/map/Map<~lib/string/String,usize>#set" (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + (func $~lib/symbol/_Symbol.for (result i32) + (local $0 i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String> - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - local.get $0 - local.get $6 - call $"~lib/map/Map<~lib/string/String,usize>#find" - local.tee $2 - if - local.get $2 - local.get $1 - i32.store offset=4 - else + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=16 + i32.const 2748 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $0 i32.store - local.get $0 - i32.load offset=12 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + call $"~lib/map/Map<~lib/string/String,usize>#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 + global.get $~lib/symbol/stringToId + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1056 i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2422,257 +2041,75 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $5 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $9 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $4 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $9 - i32.ne - if - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.load - local.tee $10 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=8 - local.get $2 - local.get $10 - i32.store - local.get $2 - local.get $9 - i32.load offset=4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=8 - local.get $2 - local.get $8 - local.get $10 - call $~lib/util/hash/HASH<~lib/string/String> - local.get $7 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $10 - i32.load - i32.store offset=8 - local.get $10 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $9 - i32.const 12 - i32.add - local.set $9 - br $while-continue|0 - end - end + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=16 local.get $0 - local.get $8 i32.store - local.get $0 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $7 + i32.const 1056 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1056 i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $0 + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + call $"~lib/map/Map<~lib/string/String,usize>#find" + local.tee $0 + i32.eqz + if + i32.const 1648 + i32.const 1712 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 - i32.store offset=16 + i32.load offset=4 + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + br $folding-inner1 end - global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId local.get $0 + i32.eqz + if + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $1 local.get $0 - i32.load offset=8 - local.tee $2 - i32.store offset=8 + call $"~lib/map/Map<~lib/string/String,usize>#set" global.get $~lib/memory/__stack_pointer - local.get $0 + global.get $~lib/symbol/idToString + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - local.get $2 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $2 - i32.const 1056 - i32.store - local.get $0 i32.const 1056 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 local.get $1 - local.get $6 local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store + call $"~lib/map/Map#set" + br $folding-inner1 end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - if i32.const 35536 i32.const 35584 i32.const 1 @@ -2681,75 +2118,17 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 ) - (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -2761,625 +2140,532 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $2 i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - local.tee $7 - call $"~lib/map/Map#find" - local.tee $2 - if + i32.store + block $__inlined_func$~lib/string/String#concat$253 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1888 + local.set $0 + br $__inlined_func$~lib/string/String#concat$253 + end global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - local.get $2 - i32.const 1056 - i32.store offset=4 local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/rt/itcms/__link - else - global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.store + local.get $2 + local.get $3 + memory.copy local.get $0 - i32.load offset=16 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eq + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 35520 + i32.const 0 + i32.store + i32.const 37088 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 35520 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if local.get $0 - i32.load offset=4 - i32.const 1 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 i32.shl + i32.const 35520 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 - i32.or + i32.add + local.set $1 + br $for-loop|1 end - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=8 - local.set $10 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $10 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $10 - i32.ne - if - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $10 - i32.load - local.tee $11 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $10 - i32.load offset=4 - local.tee $4 - i32.store offset=8 - local.get $2 - local.get $4 - i32.store offset=4 - local.get $2 - local.get $9 - local.get $8 - local.get $11 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=8 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $10 - i32.const 12 - i32.add - local.set $10 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=12 - local.get $0 - local.get $9 - i32.store - local.get $0 - local.get $9 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $2 - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - local.get $2 - i32.const 1056 - i32.store offset=4 - local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 local.get $0 - local.get $0 - i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $1 - local.get $7 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/symbol/_Symbol.for (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String> - call $"~lib/map/Map<~lib/string/String,usize>#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - if - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/util/hash/HASH<~lib/string/String> - call $"~lib/map/Map<~lib/string/String,usize>#find" - local.tee $0 - i32.eqz - if - i32.const 1648 - i32.const 1712 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end - global.get $~lib/symbol/nextId - local.tee $0 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $0 - i32.eqz - if - unreachable - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/stringToId - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map<~lib/string/String,usize>#set" - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/idToString - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - local.get $1 - local.get $0 - call $"~lib/map/Map#set" - br $folding-inner1 - end - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 35520 + i32.const 37092 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 35520 + global.set $~lib/rt/tlsf/ROOT ) - (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1472 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - call $"~lib/map/Map#find" - i32.const 0 - i32.ne - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - if - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.set $1 local.get $0 - local.get $1 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $~lib/symbol/stringToId + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/symbol/idToString + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1536 + call $~lib/rt/itcms/__visit + i32.const 1648 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $"~lib/map/Map#has" (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + if + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul local.tee $0 local.get $0 i32.const 15 @@ -3400,25 +2686,14 @@ i32.shr_u i32.xor call $"~lib/map/Map#find" - local.tee $0 - i32.eqz - if - i32.const 1648 - i32.const 1712 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 + i32.const 0 + i32.ne global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) - (local $1 i32) + (func $"~lib/map/Map#get" (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3438,297 +2713,1063 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/idToString - local.tee $1 + local.get $0 i32.store - local.get $1 local.get $0 - call $"~lib/map/Map#has" - if (result i32) - global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/idToString - local.tee $1 - i32.store - local.get $1 - local.get $0 - call $"~lib/map/Map#get" - else - i32.const 0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 1648 + i32.const 1712 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$253 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1888 - local.set $0 - br $__inlined_func$~lib/string/String#concat$253 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + ) + (func $~start + global.get $~started + if return end - i32.const 35536 - i32.const 35584 - i32.const 1 i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~started + call $start:std/symbol ) - (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - if - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - i32.const 1888 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1888 - i32.store block $break|0 - block $case11|0 - block $case10|0 - block $case9|0 - block $case8|0 - block $case7|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - i32.const 1 - i32.sub - br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 - end - i32.const 1920 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.store - br $break|0 - end - i32.const 1968 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store - br $break|0 - end - i32.const 2032 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store - br $break|0 - end - i32.const 2080 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2080 - i32.store - br $break|0 - end - i32.const 2112 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2112 - i32.store - br $break|0 - end - i32.const 2160 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2160 - i32.store - br $break|0 - end - i32.const 2192 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2192 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 35516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 35516 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 35516 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1472 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $"~lib/map/Map<~lib/string/String,usize>#set" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + call $~lib/util/hash/HASH<~lib/string/String> + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $0 + local.get $6 + call $"~lib/map/Map<~lib/string/String,usize>#find" + local.tee $2 + if + local.get $2 + local.get $1 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $9 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.load + local.tee $10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $2 + local.get $10 + i32.store + local.get $2 + local.get $9 + i32.load offset=4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $2 + local.get $8 + local.get $10 + call $~lib/util/hash/HASH<~lib/string/String> + local.get $7 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $10 + i32.load + i32.store offset=8 + local.get $10 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $9 + i32.const 12 + i32.add + local.set $9 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=16 + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + local.get $2 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $2 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $1 + local.get $6 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"~lib/map/Map#set" (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $2 + if + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=4 + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2748 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $10 + i32.load + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.load offset=4 + local.tee $4 + i32.store offset=8 + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + local.get $9 + local.get $8 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $4 + i32.const 15 + i32.shr_u + local.get $4 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + i32.const 13 + i32.shr_u + local.get $4 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + i32.const 16 + i32.shr_u + local.get $4 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $2 i32.store - br $break|0 + local.get $2 + i32.const 12 + i32.add + local.set $2 end - i32.const 2240 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2240 - i32.store - br $break|0 + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 end - i32.const 2272 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 2272 - i32.store - br $break|0 end - i32.const 2320 - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2320 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $0 + local.get $9 i32.store - br $break|0 + local.get $0 + local.get $9 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 2368 - local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 2368 + local.get $0 i32.store - br $break|0 - end - global.get $~lib/symbol/idToString - if (result i32) global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/idToString + local.get $0 + i32.load offset=8 local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + local.get $3 + i32.const 12 + i32.mul + i32.add + local.tee $2 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store local.get $2 + i32.const 1056 + i32.store offset=4 local.get $0 - call $"~lib/map/Map#has" - else - i32.const 0 - end - if + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - global.get $~lib/symbol/idToString - local.tee $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 local.get $1 + local.get $7 local.get $0 - call $"~lib/map/Map#get" - local.tee $1 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 2416 - local.get $1 - call $~lib/string/String.__concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2464 - call $~lib/string/String.__concat - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 35536 + i32.const 35584 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $start:std/symbol (local $0 i32) @@ -4199,46 +4240,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2748 - i32.lt_s - if - i32.const 35536 - i32.const 35584 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 1536 - i32.const 1584 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index b0cdfab0ca..d4c4a18806 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -11,36 +11,36 @@ (type $9 (func (param i32))) (type $10 (func (param f64 f64) (result i32))) (type $11 (func (param f32 f32) (result i32))) - (type $12 (func (param i32 i32 i32 i32 i32))) - (type $13 (func (param i32 i32 i32 i32 i32 i32))) - (type $14 (func (param f32 i32 i32) (result i32))) - (type $15 (func (param f64 i32 i32) (result i32))) + (type $12 (func (param f64 i32 i32) (result i32))) + (type $13 (func (param f32 i32 i32) (result i32))) + (type $14 (func (param i32 i32 i32 i32 i32))) + (type $15 (func (param i32 i32 i32 i32 i32 i32))) (type $16 (func (param i32 i32) (result i64))) (type $17 (func (param i64 i64 i32 i32) (result i64))) - (type $18 (func (param i32 i64) (result i32))) - (type $19 (func (param i32 i64 i32) (result i32))) + (type $18 (func (param i32 i64 i32) (result i32))) + (type $19 (func (param i32 i64) (result i32))) (type $20 (func (param i32 i32 i32 i32))) (type $21 (func (param i32 i32 i64))) - (type $22 (func (param f32 f32 i32 i32) (result f32))) - (type $23 (func (param f64 f64 i32 i32) (result f64))) - (type $24 (func (param i64 i32 i32) (result i64))) - (type $25 (func (param i32 f64 i32) (result i32))) - (type $26 (func (param i32 i32) (result f64))) - (type $27 (func (param i32 i32) (result f32))) + (type $22 (func (param i32 i32) (result f64))) + (type $23 (func (param i32 i32) (result f32))) + (type $24 (func (param i32 f64 i32) (result i32))) + (type $25 (func (param f64 f64 i32 i32) (result f64))) + (type $26 (func (param f32 f32 i32 i32) (result f32))) + (type $27 (func (param i64 i32 i32) (result i64))) (type $28 (func (param i64 i32 i32))) - (type $29 (func (param f32 i32 i32) (result f32))) - (type $30 (func (param f64 i32 i32) (result f64))) + (type $29 (func (param i32 f32 i32) (result i32))) + (type $30 (func (param i32 f64) (result i32))) (type $31 (func (param i32 f32) (result i32))) - (type $32 (func (param i32 f64) (result i32))) - (type $33 (func (param f32 i32 i32))) + (type $32 (func (param f64 i32 i32) (result f64))) + (type $33 (func (param f32 i32 i32) (result f32))) (type $34 (func (param f64 i32 i32))) - (type $35 (func (param i32 f32 i32) (result i32))) - (type $36 (func (result i32))) - (type $37 (func (param i32 i64 i32))) - (type $38 (func (param i32 i64 i64 i32 i64 i32) (result i32))) - (type $39 (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $40 (func (param i32 i32 f64))) - (type $41 (func (param i32 i32 f32))) + (type $35 (func (param f32 i32 i32))) + (type $36 (func (param i32 i32 f64))) + (type $37 (func (param i32 i32 f32))) + (type $38 (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $39 (func (param i32 i64 i32))) + (type $40 (func (result i32))) + (type $41 (func (param i32 i64 i64 i32 i64 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -673,3164 +673,3394 @@ (data $304 (i32.const 16000) "O\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00A\08\00\00A\00\00\00A\00\00\00\81\08\00\00\81\00\00\00\01\t\00\00\01\01\00\00\01\n\00\00\01\02\00\00\01\19\00\00\01\1a\00\00\00\00\00\00B\08\00\00\02\t") (data $304.1 (i32.const 16252) "\02\19\00\00\02\1a\00\00B\00\00\00\82\08\00\00\82\00\00\00\02\01\00\00\02\n\00\00\02\02") (table $0 166 166 funcref) - (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0") + (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" $~lib/util/sort/COMPARATOR~anonymous|0 $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 7152 - call $~lib/rt/itcms/__visit - i32.const 7616 - call $~lib/rt/itcms/__visit - i32.const 7728 - call $~lib/rt/itcms/__visit - i32.const 10928 - call $~lib/rt/itcms/__visit - i32.const 11008 - call $~lib/rt/itcms/__visit - i32.const 11088 - call $~lib/rt/itcms/__visit - i32.const 11184 - call $~lib/rt/itcms/__visit - i32.const 11264 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - i32.const 1168 - call $~lib/rt/itcms/__visit - i32.const 8432 - call $~lib/rt/itcms/__visit - i32.const 9488 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.const 1073741804 + i32.ge_u if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 1168 + i32.const 1232 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1403 - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $1 - i32.eqz - if - local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 49088 - i32.lt_u - i32.and - i32.eqz - if + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$68 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$68 + end + local.get $2 i32.const 0 - i32.const 1232 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + i32.gt_s + br_if $do-loop|0 end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1403 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 end - global.get $~lib/rt/itcms/toSpace - local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.load offset=12 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace local.tee $1 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 16000 - i32.load - i32.gt_u - if - i32.const 1360 - i32.const 1424 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 16004 - i32.add - i32.load - i32.const 32 - i32.and - end + i32.load offset=8 local.set $3 local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 + local.get $1 global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 i32.or i32.store offset=4 - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.store offset=8 - local.get $1 - local.get $0 - local.get $1 + local.get $3 + local.get $2 + local.get $3 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 + local.get $1 local.get $2 - local.get $0 i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 - i32.eqz + memory.fill + local.get $1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount + i32.const 1360 + i32.const 1760 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 268 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 270 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 178 + i32.const 45 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 284 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $4 - local.get $5 - i32.store offset=8 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 1360 + i32.const 1632 + i32.const 1031 + i32.const 64 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 4 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 i32.shl - local.get $3 i32.add - i32.const 2 - i32.shl + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz + (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 201 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.load - local.tee $3 + local.get $0 + i32.load offset=8 i32.const 1 - i32.and - i32.eqz + i32.shr_u + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 203 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 463 + i32.const 64 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.const 4 + i32.const 1 + i32.shl i32.add - local.get $1 - i32.load - i32.const -4 - i32.and + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.set $1 local.get $3 - i32.const 2 - i32.and if local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + local.get $5 + memory.copy end - local.get $4 - local.get $2 - i32.const 2 - i32.or + local.get $1 i32.store - local.get $3 - i32.const -4 - i32.and + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1504 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 local.get $1 + i32.store + local.get $2 + local.get $1 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.add - i32.ne + ) + (func $~lib/typedarray/Int64Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 234 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 251 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store offset=96 local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 747 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 382 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.const -16 - i32.and + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=1568 - local.tee $3 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1360 + i32.const 1632 + i32.const 36 + i32.const 45 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $3 - i32.const 20 - i32.lt_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 0 - i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1457 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.const 4 + i32.const 3 + i32.shl i32.add - local.get $3 + local.get $2 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $3 - i32.const 2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.store offset=1568 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 889 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) + (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if + i32.const 1360 + i32.const 1632 + i32.const 1315 + i32.const 64 + call $~lib/builtins/abort unreachable end - i32.const 49088 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - i32.const 50656 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 320 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.const 255 + local.get $2 + i32.sub + i32.const 31 + i32.shr_s + local.get $2 + i32.or + local.get $2 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if local.get $0 - i32.const 23 - i32.lt_u + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq local.get $0 - i32.const 2 - i32.shl - i32.const 49088 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + i32.const 3 + i32.eq + i32.and + if local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 49088 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/rt/itcms/Object#makeGray end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 end end - i32.const 49088 - i32.const 50660 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 49088 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/__free (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 49088 - i32.lt_u + (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u if - call $~lib/rt/tlsf/initialize + i32.const 1360 + i32.const 1632 + i32.const 1173 + i32.const 64 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - else - local.get $1 - i32.load i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1504 - i32.const 562 - i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 49088 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1232 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 49088 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - call $~lib/rt/tlsf/__free - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 - end - local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u if - i32.const 0 - i32.const 1504 - i32.const 334 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 605 + i32.const 64 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - i32.const -1 local.get $1 + i32.const 1 i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 1168 - i32.const 1504 - i32.const 461 - i32.const 29 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - local.get $3 - i32.const 256 - i32.ge_u - if (result i32) - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $3 - end - else - local.get $3 - end - i32.const 4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + i32.const -1 local.get $0 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop local.get $2 - i32.gt_s - select - memory.grow i32.const 0 i32.lt_s if local.get $2 - memory.grow + local.get $3 + i32.add + local.tee $2 i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 i32.lt_s if - unreachable + local.get $2 + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end end - local.get $0 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const -1 end - local.get $3 - local.get $1 - i32.load - i32.const -4 - i32.and - i32.gt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 501 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/tlsf/removeBlock + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load - local.set $4 - local.get $3 - i32.const 4 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 15 - i32.and + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1504 - i32.const 361 - i32.const 14 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const -4 - i32.and - local.get $3 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $2 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - local.get $3 - local.get $4 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - local.get $2 - i32.const 4 - i32.sub + i32.const 49120 + i32.const 49168 i32.const 1 - i32.or - i32.store - local.get $0 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $4 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $0 - local.get $0 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.ge_u + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 1168 - i32.const 1232 - i32.const 261 - i32.const 31 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u i32.ge_u if - block $__inlined_func$~lib/rt/itcms/interrupt$68 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$68 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + i32.const 1360 + i32.const 1632 + i32.const 736 + i32.const 64 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 + i32.store local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - i32.const -4 - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new local.tee $1 - i32.const 0 - local.get $0 - memory.fill + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.eqz + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.eqz + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 - i32.const 1232 - i32.const 295 - i32.const 14 + i32.const 1360 + i32.const 1632 + i32.const 25 + i32.const 45 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.const 20 - i32.sub - local.tee $1 + local.get $0 i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $0 - i32.const 3 - i32.eq - i32.and - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 i32) - (local $8 f64) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - local.get $3 - local.get $2 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1446 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 local.get $1 - i32.sub - i32.const 1 + i32.const 3 + i32.shl i32.add - local.tee $7 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $7 - i32.const 1 - i32.and - local.get $3 - select + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load offset=8 - local.tee $8 - local.set $6 - local.get $3 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $8 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.le_s - if - local.get $5 - local.set $6 - local.get $8 - local.set $5 - end - local.get $7 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 309 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$714 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 local.get $3 - i32.le_s if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - f64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 - local.get $8 - f64.store offset=16 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$714 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 49088 + i32.const 0 + i32.store + i32.const 50656 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - local.get $3 - i32.const 3 + i32.const 2 i32.shl + i32.const 49088 i32.add - local.get $5 - f64.store offset=16 - loop $while-continue|2 + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - local.get $3 - i32.le_s + i32.const 16 + i32.lt_u if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $9 - local.get $5 - f64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 49088 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end end local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store offset=8 - local.get $7 - i32.const 2 + i32.const 1 i32.add - local.set $7 + local.set $0 br $for-loop|0 end end + i32.const 49088 + i32.const 50660 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 49088 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) local.get $1 - local.get $2 - i32.eq + i32.const 1073741820 + i32.gt_u if - local.get $1 - return + i32.const 1168 + i32.const 1504 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable end local.get $0 local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load offset=8 - local.get $6 - f64.load - i32.const 2 - global.set $~argumentsLength local.get $3 - i32.load - call_indirect (type $10) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load - local.set $5 + i32.const 27 local.get $3 - local.get $0 - local.get $2 - i32.const 3 + i32.clz + i32.sub i32.shl i32.add - local.tee $3 - f64.load - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f64.store - local.get $2 i32.const 1 i32.sub - local.set $2 - br $while-continue|1 + else + local.get $3 end + else + local.get $3 end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load offset=8 - local.get $1 - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $10) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 f64) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $9 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 + i32.const 4 + local.get $0 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $1 + local.get $2 local.get $1 local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 i32.lt_s if local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - f64.load - f64.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $9 - local.get $6 - i32.sub - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - f64.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - end - loop $for-loop|2 + local.get $0 local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 local.get $3 - i32.le_s + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $4 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $10) i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $8 - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 + i32.const 1504 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable end end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - local.get $2 - i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - local.get $3 - i64.xor - local.tee $3 - i64.gt_s - local.get $2 local.get $3 - i64.lt_s - i32.sub - ) - (func $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $0 - local.get $1 - i32.add - ) - (func $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - local.get $0 - local.get $1 - i64.add - ) - (func $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - local.get $0 local.get $1 - f32.add - ) - (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 - f64.add - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $0 - i32.mul - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - local.get $0 - local.get $0 - i64.mul - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - local.get $0 - f32.mul - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result f64) - local.get $0 - local.get $0 - f64.mul - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.extend8_s - i32.const 2 - i32.gt_s - ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $0 - i32.const 20 - i32.sub - local.tee $3 i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const -4 i32.and - i32.const 16 + local.get $3 i32.sub - i32.le_u + local.tee $2 + i32.const 16 + i32.ge_u if + local.get $1 local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store local.get $1 - i32.store offset=16 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store local.get $0 - return + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store end local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 - local.get $0 - local.get $1 - i32.gt_u - select - memory.copy - local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.gt_u - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 49088 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.extend16_s - i32.const 2 - i32.gt_s - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 4 + i32.sub + local.set $1 local.get $0 - i32.const 65535 + i32.const 15 i32.and - i32.const 2 - i32.gt_u - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 1 local.get $0 - i32.const 2 - i32.gt_s + select + if (result i32) + i32.const 1 + else + local.get $1 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1504 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.const 2 - i32.gt_u - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i64.const 2 - i64.gt_s ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i64.const 2 - i64.gt_u ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - f32.const 2 - f32.gt - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - f64.const 2 - f64.gt ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.const 255 - i32.and i32.const 2 - i32.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 255 - i32.and - i32.eqz ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.store + local.get $1 local.get $0 - i32.const 65535 - i32.and - i32.eqz - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.load offset=8 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 167 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i32.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.store + local.get $1 local.get $0 - i32.eqz + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 2 - i64.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + i32.store + local.get $1 local.get $0 - i64.eqz - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1162 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 2 - f32.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + i32.store local.get $0 - f32.const 0 - f32.eq + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - f64.const 2 - f64.eq - ) - (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - f64.const 0 - f64.eq ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 255 - i32.and + (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.eq - ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 65535 - i32.and + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 878 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.eq + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 594 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.eq + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 4 - i64.eq - ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + i32.store + local.get $1 local.get $0 - f32.const 4 - f32.eq - ) - (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1020 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 4 - f64.eq - ) - (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.store local.get $0 - i32.extend8_s - i32.const 1 - i32.and - i32.eqz + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 local.get $0 + i32.load offset=8 i32.const 1 - i32.and - i32.eqz - ) - (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 452 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.extend16_s + i32.store + local.get $0 + i32.load offset=4 + local.get $1 i32.const 1 - i32.and - i32.eqz + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 1 - i64.and - i64.eqz - ) - (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $__inlined_func$~lib/math/NativeMathf.mod (result f32) - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $2 - i32.const 255 - i32.eq - if - local.get $0 - local.get $0 - f32.add - local.tee $0 - local.get $0 - f32.div - br $__inlined_func$~lib/math/NativeMathf.mod - end - local.get $1 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1304 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - local.tee $3 - i32.const -2147483648 - i32.le_u - if - local.get $0 - local.get $3 - i32.const -2147483648 - i32.ne - f32.convert_i32_u - f32.mul - br $__inlined_func$~lib/math/NativeMathf.mod - end + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner0 local.get $1 - i32.const -2147483648 - i32.and + call $~lib/array/Array#get:length + local.get $3 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length local.set $3 - local.get $2 - if (result i32) - local.get $1 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $1 - i32.const 1 - local.get $2 - local.get $1 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $2 - i32.sub - i32.shl - end - local.set $1 - loop $while-continue|0 + loop $for-loop|0 local.get $2 - i32.const 128 - i32.gt_s + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 8388608 - i32.ge_u - if (result i32) - local.get $0 - f32.const 0 - f32.mul - local.get $1 - i32.const 8388608 - i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod - drop - local.get $1 - i32.const 8388608 - i32.sub - else - local.get $1 - end - i32.const 1 - i32.shl - local.set $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end - local.get $1 - i32.const 8388608 - i32.ge_u - if - local.get $0 - f32.const 0 - f32.mul - local.get $1 - i32.const 8388608 - i32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod - drop - local.get $1 - i32.const 8388608 - i32.sub - local.set $1 - end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz local.get $2 - local.get $1 - i32.const 8 - i32.shl - i32.clz - local.tee $4 - i32.sub - local.set $2 - local.get $1 - local.get $4 - i32.shl - local.set $1 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop local.get $2 i32.const 0 - i32.gt_s - if (result i32) - local.get $1 - i32.const 8388608 - i32.sub + i32.lt_s + if local.get $2 - i32.const 23 - i32.shl - i32.or - else - local.get $1 - i32.const 1 + local.get $3 + i32.add + local.tee $2 + i32.const 0 local.get $2 - i32.sub - i32.shr_u + i32.const 0 + i32.gt_s + select + local.set $2 end - local.get $3 - i32.or - f32.reinterpret_i32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $1 + f64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 end - f32.const 0 - f32.eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - block $__inlined_func$~lib/math/NativeMath.mod$1 (result f64) + (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + i32.const -1 local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $6 - i64.const 2047 - i64.eq - if - local.get $0 - local.get $0 - f64.add - local.tee $0 - local.get $0 - f64.div - br $__inlined_func$~lib/math/NativeMath.mod$1 - end - local.get $4 - i64.const 1 - i64.shl + call $~lib/typedarray/Int32Array#get:length local.tee $3 - i64.const -9223372036854775808 - i64.le_u + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s if - local.get $0 + local.get $2 local.get $3 - i64.const -9223372036854775808 - i64.ne - f64.convert_i32_u - f64.mul - br $__inlined_func$~lib/math/NativeMath.mod$1 - end - local.get $4 - i64.const 63 - i64.shr_u - local.set $5 - local.get $6 - i64.eqz - if (result i64) - local.get $4 - i64.const 1 - local.get $6 - local.get $4 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $6 - i64.sub - i64.shl - else - local.get $4 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 end - local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 loop $while-continue|0 - local.get $6 - i64.const 1024 - i64.gt_s + local.get $2 + local.get $3 + i32.lt_s if - local.get $3 - i64.const 4503599627370496 - i64.ge_u - if (result i64) - local.get $0 - f64.const 0 - f64.mul - local.get $3 - i64.const 4503599627370496 - i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$1 - drop - local.get $3 - i64.const 4503599627370496 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $6 - i64.const 1 - i64.sub - local.set $6 + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + f32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 br $while-continue|0 end end - local.get $3 - i64.const 4503599627370496 - i64.ge_u - if - local.get $0 - f64.const 0 - f64.mul - local.get $3 - i64.const 4503599627370496 - i64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod$1 - drop - local.get $3 - i64.const 4503599627370496 - i64.sub - local.set $3 - end - local.get $6 - local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $4 - i64.sub - local.set $6 - local.get $3 - local.get $4 - i64.shl - local.set $3 - local.get $6 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.sub - local.get $6 - i64.const 52 - i64.shl - i64.or - else - local.get $3 - i64.const 1 - local.get $6 - i64.sub - i64.shr_u - end - local.get $5 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 + i32.const -1 end - f64.const 0 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 0 + i32.lt_s if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 8012 i32.add - i64.load32_u + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end + i32.const -1 end - local.get $1 - i32.const 100 - i32.ge_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 10 - i32.ge_u - if + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + i32.const -1 local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i32.load - i32.store - else - local.get $0 + local.get $3 + i32.ge_s + i32.or + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $1 - i32.extend8_s - local.tee $3 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - local.tee $2 if - local.get $3 - i32.const -128 - i32.eq - if - local.get $0 - i64.const 15762813447372845 - i64.store - i32.const 4 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.extend8_s - local.tee $3 - i32.const 10 - i32.lt_u - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + i32.const -1 local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.tee $3 + i32.eqz + local.get $2 local.get $3 - i32.const 48 + i32.ge_s i32.or - i32.store16 + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend8_s - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end + i32.const -1 end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 255 - i32.and - local.tee $2 - i32.const 10 - i32.lt_u - if - local.get $0 - local.get $2 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return - end - local.get $1 - i32.const 255 - i32.and - local.set $1 - i32.const 3 - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $1 - i32.const 100 - i32.ge_u - select - local.set $2 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - local.tee $2 if - local.get $3 - i32.const -32768 - i32.eq - if - local.get $0 - i64.const 15481338470793261 - i64.store - local.get $0 - i32.const 3670070 - i32.store offset=8 - i32.const 6 - return - end - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.extend16_s - local.tee $3 - i32.const 10 - i32.lt_u - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + i32.const -1 local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + local.get $2 local.get $3 - i32.const 48 + i32.ge_s i32.or - i32.store16 + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop local.get $2 - i32.const 1 - i32.add - return - end - local.get $1 - i32.extend16_s - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end + i32.const -1 end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 65535 - i32.and - local.tee $2 - i32.const 10 - i32.lt_u + (func $~lib/typedarray/Int32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $0 - local.get $2 - i32.const 48 - i32.or - i32.store16 + i32.const 49120 + i32.const 49168 i32.const 1 - return - end - local.get $1 - i32.const 65535 - i32.and - local.set $1 - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add + call $~lib/builtins/abort + unreachable end - local.set $2 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 - local.get $1 - i32.sub - local.set $1 - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.set $0 - local.get $1 - i32.const 10 - i32.lt_u - if + i32.store offset=4 + block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + i32.const -1 local.get $0 - local.get $1 - i32.const 48 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + local.get $2 + local.get $3 + i32.ge_s i32.or - i32.store16 + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop local.get $2 - i32.const 1 - i32.add - return - end - local.get $0 - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end + i32.const -1 end - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 10 - i32.lt_u + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 return end + global.get $~lib/rt/itcms/white local.get $0 - local.get $1 - local.get $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end + i32.const 20 + i32.sub local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) - (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) loop $while-continue|0 local.get $1 - i64.const 100000000 - i64.ge_u + i32.const 10000 + i32.ge_u if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 local.get $0 local.get $2 i32.const 4 @@ -3839,19 +4069,7 @@ i32.const 1 i32.shl i32.add - local.get $1 - local.get $1 - i64.const 100000000 - i64.div_u - local.tee $1 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.tee $3 - i32.const 10000 - i32.rem_u - local.tee $4 + local.get $3 i32.const 100 i32.div_u i32.const 2 @@ -3859,38 +4077,7 @@ i32.const 8012 i32.add i64.load32_u - local.get $4 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 10000 - i32.div_u - local.tee $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 8012 - i32.add - i64.load32_u - local.get $3 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -3905,4963 +4092,4904 @@ br $while-continue|0 end end - local.get $0 - local.get $1 - i32.wrap_i64 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 - i64.const 0 - i64.lt_s - local.tee $3 + i32.const 100 + i32.ge_u if local.get $0 - i32.const 45 - i32.store16 - i64.const 0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 - i64.sub + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u local.set $1 end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $4 local.get $1 - i64.const 10 - i64.lt_u + i32.const 10 + i32.ge_u if - local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $3 + i32.const 2 + i32.shl + i32.const 8012 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub i32.const 1 + i32.shl i32.add - return + local.get $1 + i32.const 48 + i32.add + i32.store16 end + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 local.get $1 - i64.const 4294967295 - i64.le_u + i32.add + ) + (func $~lib/typedarray/Uint8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - i32.wrap_i64 - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) + i32.const 0 + i32.ge_s + if local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else + local.get $0 local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop local.get $2 - i32.const 100000000 - i32.ge_u - i32.add + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end end - local.set $0 - local.get $4 - local.get $2 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $4 - local.get $1 - local.get $1 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $1 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $1 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $1 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#slice@varargs (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $outOfRange + global.get $~argumentsLength + br_table $1of2 $1of2 $2of2 $outOfRange end + unreachable end - local.tee $0 - call $~lib/util/number/utoa64_dec_lut + i32.const 2147483647 + local.set $1 end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + i32.store + local.get $0 + i32.const 0 + local.get $1 + call $~lib/typedarray/Int32Array#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - local.set $2 local.get $1 - i64.const 10 - i64.lt_u + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u if - local.get $0 + local.get $3 local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 + i32.store offset=16 + local.get $0 return end local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $0 - local.get $2 - local.get $3 - local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $2 - local.get $1 - local.get $1 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $1 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $1 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $1 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $0 - call $~lib/util/number/utoa64_dec_lut - end + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 local.get $0 - ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $2 local.get $1 - i64.sub - local.set $9 - i64.const 1 - i32.const 0 local.get $3 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.tee $12 - i64.const 1 - i64.sub - local.tee $11 - local.get $2 - i64.and - local.set $8 - local.get $2 + i32.load offset=16 + local.tee $0 + local.get $0 local.get $1 - i64.shr_u - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $3 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100000 - i32.div_u - local.set $6 - local.get $3 - i32.const 100000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10000 - i32.div_u - local.set $6 - local.get $3 - i32.const 10000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 1000 - i32.div_u - local.set $6 - local.get $3 - i32.const 1000 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 100 - i32.div_u - local.set $6 - local.get $3 - i32.const 100 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - i32.const 10 - i32.div_u - local.set $6 - local.get $3 - i32.const 10 - i32.rem_u - local.set $3 - br $break|1 - end - local.get $3 - local.set $6 - i32.const 0 - local.set $3 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $5 - local.get $6 - i32.or - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $4 - local.get $3 - i64.extend_i32_u - local.get $10 - i64.extend_i32_s - local.tee $2 - i64.shl - local.get $8 - i64.add - local.tee $1 - i64.ge_u - if - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - local.get $2 - i64.shl - local.set $2 - local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|3 - local.get $1 - local.get $9 - i64.lt_u - local.get $4 - local.get $1 - i64.sub - local.get $2 - i64.ge_u - i32.and - if (result i32) - local.get $9 - local.get $1 - local.get $2 - i64.add - local.tee $8 - i64.gt_u - local.get $9 - local.get $1 - i64.sub - local.get $8 - local.get $9 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $2 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $7 - i32.store16 - local.get $5 - return - end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $8 - i64.const 10 - i64.mul - local.tee $1 - local.get $10 - i64.extend_i32_s - i64.shr_u - local.tee $2 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - local.get $7 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.sub - local.set $7 - local.get $1 - local.get $11 - i64.and - local.tee $8 - local.get $4 - i64.ge_u - br_if $while-continue|4 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/util/number/_K - local.get $7 - i32.add - global.set $~lib/util/number/_K - local.get $9 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - local.get $7 - i32.sub - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - i64.mul - local.set $1 + i32.store local.get $0 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 19 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $2 i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.tee $0 - i32.load16_u - local.set $7 - loop $while-continue|6 - local.get $1 - local.get $8 - i64.gt_u - local.get $4 - local.get $8 - i64.sub - local.get $12 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $8 - local.get $12 - i64.add - local.tee $2 - i64.gt_u - local.get $1 - local.get $8 - i64.sub - local.get $2 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $8 - local.get $12 - i64.add - local.set $8 - br $while-continue|6 - end - end + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.store16 - local.get $5 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - local.get $2 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $0 - local.get $1 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $3 local.get $1 - local.get $2 - i32.add + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 1 + call $~lib/rt/itcms/__new local.tee $3 - i32.const 21 - i32.le_s + i32.store offset=4 + local.get $3 + local.get $0 local.get $1 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 i32.le_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.ge_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $3 + i32.eqz + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $3 + i32.add + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Uint8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.eq + ) + (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s if + local.get $2 local.get $0 - local.get $1 - i32.const 1 + local.get $2 + i32.const 3 i32.shl i32.add - i32.const 48 - i32.store16 + i64.load local.get $1 + i64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.sub + local.set $2 + br $while-continue|0 end end - local.get $0 - local.get $3 + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 local.get $3 - i32.const 2 i32.add - else local.get $3 - i32.const 21 - i32.le_s + i32.const 1 + i32.sub + local.get $2 + local.get $2 local.get $3 + i32.ge_s + select + local.get $2 i32.const 0 - i32.gt_s - i32.and - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 local.get $2 - i32.sub - i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 - i32.add - else - local.get $3 i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) + i32.ge_s + if + local.get $2 local.get $0 + local.get $2 i32.const 2 - local.get $3 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 i32.sub - local.tee $3 + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 i32.const 1 i32.shl i32.add - local.get $0 + i32.load16_u local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop + local.get $2 i32.const 1 - i32.shl - memory.copy - local.get $0 - i32.const 3014704 - i32.store - i32.const 2 + i32.sub local.set $2 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $1 - call $~lib/util/number/utoa32_dec_lut - local.get $2 - i32.const 45 - i32.const 43 - local.get $3 - select - i32.store16 - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - memory.copy - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - i32.const 4 - i32.add - local.tee $4 - local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - local.get $4 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 - local.get $0 - local.get $1 - i32.add - local.set $1 - end - local.get $1 - i32.const 2 - i32.add + br $while-continue|0 end end + i32.const -1 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - local.get $1 - f64.const 0 - f64.lt - local.tee $4 + (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - local.set $1 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 - if (result i64) - local.get $1 - f32.demote_f64 - i32.reinterpret_f32 - local.tee $8 - i32.const 2139095040 - i32.and - i32.const 23 - i32.shr_u - local.tee $9 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 i32.const 1 - local.get $9 - select - i32.const 150 i32.sub - local.set $5 - local.get $8 - i32.const 8388607 - i32.and - i64.extend_i32_u - local.get $9 + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 23 - i64.shl - i64.add - else - local.get $1 - i64.reinterpret_f64 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $1 + i64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int32Array#get:length local.tee $3 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + local.get $3 + i32.add + local.get $3 i32.const 1 - local.get $8 - select - i32.const 1075 i32.sub - local.set $5 + local.get $2 + local.get $2 local.get $3 - i64.const 4503599627370495 - i64.and - local.get $8 + i32.ge_s + select + local.get $2 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 end - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.get $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $6 - i64.clz - i32.wrap_i64 - local.tee $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $9 - local.get $6 - local.get $8 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $3 + local.get $4 local.get $3 - i64.const 8388608 - i64.const 4503599627370496 - local.get $2 + local.get $4 + i32.lt_s select - i64.eq - i32.const 1 + local.set $5 + local.get $0 + i32.load offset=4 + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl i32.add + local.get $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $4 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select + end local.tee $2 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub + i32.const 2 + i32.shl + i32.add local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $4 + local.get $5 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + else + local.get $5 + local.get $4 + local.get $4 + local.get $5 + i32.gt_s + select + end local.get $2 i32.sub - local.get $9 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $9 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_sat_f64_s local.tee $2 - local.get $2 - f64.convert_i32_s + local.get $4 local.get $1 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $2 - i32.const 3 - i32.shl - local.tee $5 i32.sub - global.set $~lib/util/number/_K - local.get $5 - i32.const 9864 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow + local.tee $1 + local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.const 10560 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $3 - local.get $3 - i64.clz - i64.shl - local.tee $3 - i64.const 4294967295 - i64.and - local.set $10 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_pow - local.tee $11 - i64.const 4294967295 - i64.and - local.tee $12 - i64.mul - local.get $10 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $13 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $14 - local.get $12 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $12 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $15 - global.get $~lib/util/number/_frc_minus - local.tee $16 - i64.const 4294967295 - i64.and - local.set $3 - local.get $12 - local.get $16 - i64.const 32 - i64.shr_u - local.tee $16 - i64.mul - local.get $3 - local.get $12 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $12 - local.get $11 - i64.const 32 - i64.shr_u - local.tee $11 - local.get $7 - i64.mul - local.get $15 - i64.const 32 - i64.shr_u - i64.add - local.get $11 - local.get $14 - i64.mul - local.get $15 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $7 - local.get $0 - local.get $4 - i32.const 1 + i32.gt_s + select + i32.const 2 i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $6 - local.get $11 - i64.mul - local.get $13 - i64.const 32 - i64.shr_u - i64.add - local.get $10 - local.get $11 - i64.mul - local.get $13 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $7 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $7 - local.get $11 - local.get $16 - i64.mul - local.get $12 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $11 - i64.mul - local.get $12 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $4 - call $~lib/util/number/genDigits - local.get $4 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $4 - i32.add ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) - (local $2 f64) + (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) - local.get $1 - f64.promote_f32 - local.tee $2 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + i32.const -1 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop local.get $2 + local.get $3 + i32.add + local.get $3 + i32.const 1 + i32.sub local.get $2 - f64.sub - f64.const 0 - f64.ne - if - local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 local.get $2 - f64.ne + i32.const 0 + i32.ge_s if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.0 - else local.get $2 - f64.const 0 - f64.lt - local.tee $3 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $3 - i32.const 8 + local.get $2 + i32.const 3 + i32.shl i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.0 + f64.load + local.get $1 + f64.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end - unreachable end + i32.const -1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + i32.const -1 local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $3 + i32.eqz + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop local.get $2 + local.get $3 + i32.add + local.get $3 i32.const 1 - call $~lib/util/number/dtoa_core + i32.sub + local.get $2 + local.get $2 + local.get $3 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $1 + f32.eq + br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) (local $2 i32) - block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) - local.get $1 - f64.const 0 - f64.eq - if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store local.get $1 - f64.ne + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.tee $5 + local.get $4 + i32.ne if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 + i32.const 11760 i32.const 3 - br $~lib/util/number/dtoa_buffered_impl|inlined.1 - else - local.get $1 - f64.const 0 - f64.lt - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 local.get $2 - i32.const 8 - i32.add - br $~lib/util/number/dtoa_buffered_impl|inlined.1 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/util/number/dtoa_core end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.add - local.tee $3 - i32.load8_s offset=1 - local.tee $6 - local.set $5 - local.get $3 - i32.load8_s + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length local.set $3 - i32.const 2 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.add - local.tee $8 - i32.load8_s - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store8 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 offset=2 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.add - local.tee $3 - i32.load8_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store8 offset=1 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=12 + i32.ge_u + if + i32.const 1360 + i32.const 1760 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i32.ne + br_if $folding-inner1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $0 - local.get $6 - i32.add - local.get $5 - i32.store8 offset=1 - local.get $7 - i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $7 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 local.get $0 + i32.load + local.tee $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load offset=4 local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.tee $0 i32.add - i32.load8_s + i32.store offset=4 + local.get $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 local.get $1 - i32.const 1 - i32.add - local.tee $4 + i32.lt_s + select local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $5 + i32.const 1 + i32.gt_u + if + local.get $5 + i32.const 1 + i32.shr_u + local.set $4 + local.get $5 + i32.const 8 + i32.sub + local.set $6 loop $while-continue|0 - local.get $2 + local.get $1 + i32.const 7 + i32.add local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 + i32.lt_u + if + local.get $1 + local.get $2 i32.add - local.tee $5 - i32.load8_s offset=1 - local.get $5 - i32.load8_s - i32.const 2 - global.set $~argumentsLength + local.tee $7 + i64.load + local.tee $3 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.set $3 + local.get $7 + local.get $2 + local.get $6 i32.add - local.set $4 + local.get $1 + i32.sub + local.tee $7 + i64.load + local.tee $8 + i64.const 8 + i64.shr_u + i64.const 71777214294589695 + i64.and + local.get $8 + i64.const 71777214294589695 + i64.and + i64.const 8 + i64.shl + i64.or + local.tee $8 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $8 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $7 + local.get $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + i64.store + local.get $1 + i32.const 8 + i32.add + local.set $1 br $while-continue|0 end end - local.get $4 - local.set $2 + local.get $5 + i32.const 1 + i32.sub + local.set $5 loop $while-continue|1 local.get $1 - local.get $2 - i32.lt_s + local.get $4 + i32.lt_u if - local.get $0 local.get $1 + local.get $2 i32.add - local.tee $3 - i32.load8_s - local.set $5 - local.get $3 - local.get $0 + local.tee $6 + i32.load8_u + local.set $7 + local.get $6 local.get $2 + local.get $5 + local.get $1 + i32.sub i32.add - local.tee $3 - i32.load8_s + local.tee $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 i32.store8 local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 br $while-continue|1 end end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $1 - i32.load8_s offset=1 - local.get $1 - i32.load8_s + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 + i32.sub + br_table $0of1 $1of1 $outOfRange end + unreachable end + i32.const 2147483647 + local.set $3 end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 local.get $2 - i32.const 1 - i32.sub - local.tee $6 local.get $3 + call $~lib/typedarray/Int32Array#copyWithin + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $4 - i32.add - local.get $0 - local.get $2 - i32.add - i32.load8_s - i32.store8 - br $for-loop|0 - end + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - loop $for-loop|1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $4 + local.get $5 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 local.get $3 - local.get $6 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_s offset=1 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select end - loop $for-loop|2 + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 0 local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $2 local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.add - i32.load8_s - local.set $8 - local.get $2 - local.get $4 - i32.add - i32.load8_s - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $7 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.get $8 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.add - local.get $7 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end + local.get $2 + local.get $3 + i32.lt_s + select end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.extend8_s - local.get $1 - i32.extend8_s - i32.sub - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.extend8_s local.tee $1 local.get $0 - i32.extend8_s - local.tee $0 - i32.gt_s local.get $0 local.get $1 - i32.gt_s + i32.lt_s + select + local.get $0 i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 - local.get $2 + i32.store local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and + call $~lib/array/Array#get:length local.get $3 - select - i32.add - local.set $7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 local.get $2 - local.get $7 - i32.ge_s + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.add - local.tee $3 - i32.load8_u offset=1 - local.tee $6 - local.set $5 - local.get $3 - i32.load8_u - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8Array#__uget + local.tee $5 local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + i32.ne if - local.get $3 - local.set $5 - local.get $6 - local.set $3 + i32.const 11552 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $7 + local.get $2 i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.add - local.tee $8 - i32.load8_u - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store8 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.add - local.get $3 - i32.store8 offset=2 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.add - local.tee $3 - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store8 offset=1 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - end - local.get $0 - local.get $6 - i32.add - local.get $5 - i32.store8 offset=1 - local.get $7 - i32.const 2 i32.add - local.set $7 + local.set $2 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.add - i32.load8_u + i32.store local.get $1 - i32.const 1 - i32.add - local.tee $4 - local.get $0 - i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength + call $~lib/array/Array#get:length local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.ne if - loop $while-continue|0 + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $5 - i32.load8_u offset=1 - local.get $5 - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 + call $~lib/typedarray/Uint64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 local.get $2 - i32.lt_s + call $~lib/typedarray/Uint64Array#__uget + local.tee $5 + local.get $4 + i64.ne if - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.load8_u - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store8 + i32.const 13984 + i32.const 3 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 + f64.convert_i32_s local.get $4 - i32.add - local.tee $1 - i32.load8_u offset=1 - local.get $1 - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else + f64.convert_i64_u + local.get $5 + f64.convert_i64_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $6 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 - local.get $1 local.get $2 + local.get $3 i32.lt_s if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $4 - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.add + i32.store local.get $0 - local.get $6 - i32.add - i32.load8_u offset=1 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.add - i32.load8_u - local.set $8 local.get $2 + call $~lib/typedarray/Uint32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint32Array#__uget + local.tee $5 local.get $4 - i32.add - i32.load8_u - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $7 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s + i32.ne if - local.get $0 - local.get $1 - i32.add - local.get $8 - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.add - local.get $7 - i32.store8 + i32.const 12960 + i32.const 3 local.get $2 - i32.const 1 - i32.add - local.set $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + local.set $2 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - local.tee $0 - local.get $1 - i32.const 255 - i32.and - local.tee $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 255 - i32.and - local.tee $1 + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 255 - i32.and - local.tee $0 - i32.gt_u + i32.store local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_u - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 + i32.store local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and + call $~lib/array/Array#get:length local.get $3 - select - i32.add - local.set $7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 local.get $2 - local.get $7 - i32.ge_s + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s offset=2 - local.tee $6 - local.set $5 - local.get $3 - i32.load16_s - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint16Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Uint16Array#__uget + local.tee $5 local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + i32.ne if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $8 - i32.load16_s - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store16 offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.store16 offset=4 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store16 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end + i32.const 12288 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $6 + local.get $2 i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 offset=2 - local.get $7 - i32.const 2 i32.add - local.set $7 + local.set $2 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq - if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_s offset=2 - local.get $5 - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 + loop $for-loop|0 local.get $2 + local.get $3 i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - local.set $5 - local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) local.get $0 - local.get $4 - i32.const 1 - i32.shl + i32.load offset=4 i32.add - local.tee $1 - i32.load16_s offset=2 + i32.load8_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - end - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 + local.get $5 + i32.ne + if + i32.const 11344 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.const 1 i32.add - local.set $4 - br $while-continue|2 + local.set $2 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load16_s - i32.store16 - br $for-loop|0 - end + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s offset=2 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable end - loop $for-loop|2 - local.get $1 + loop $for-loop|0 + local.get $2 local.get $3 - i32.le_s + i32.lt_s if - local.get $4 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $7 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s + call $~lib/typedarray/Int64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#__uget + local.tee $5 + local.get $4 + i64.ne if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.store16 + i32.const 13376 + i32.const 3 local.get $2 - i32.const 1 - i32.add - local.set $2 + f64.convert_i32_s + local.get $4 + f64.convert_i64_s + local.get $5 + f64.convert_i64_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 - br $for-loop|2 + local.set $2 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.extend16_s - local.get $1 - i32.extend16_s + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.extend16_s - local.tee $1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.extend16_s - local.tee $0 - i32.gt_s + i32.store local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.gt_s - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 + i32.store local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and + call $~lib/array/Array#get:length local.get $3 - select - i32.add - local.set $7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end loop $for-loop|0 local.get $2 - local.get $7 - i32.ge_s + local.get $3 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u offset=2 - local.tee $6 - local.set $5 - local.get $3 - i32.load16_u - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Int32Array#__uget + local.tee $5 local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s + i32.ne if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $8 - i32.load16_u - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store16 offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.store16 offset=4 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store16 offset=2 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end + i32.const 12592 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $6 + local.get $2 i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 offset=2 - local.get $7 - i32.const 2 i32.add - local.set $7 + local.set $2 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u + i32.store local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 2 - global.set $~argumentsLength + i32.store + local.get $1 + call $~lib/array/Array#get:length local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s + i32.ne if - loop $while-continue|0 + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $2 + call $~lib/typedarray/Int16Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Int16Array#__uget + local.tee $5 local.get $4 - i32.gt_s - if (result i32) - local.get $0 + i32.ne + if + i32.const 12000 + i32.const 3 + local.get $2 + f64.convert_i32_s local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u offset=2 + f64.convert_i32_s local.get $5 - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_u offset=2 - local.get $1 - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $2 - loop $for-loop|0 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 local.get $1 - local.get $2 - i32.lt_s + i64.const 100000000 + i64.ge_u if + local.get $0 local.get $2 - i32.const 1 + i32.const 4 i32.sub local.tee $2 i32.const 1 i32.shl - local.tee $8 - local.get $4 i32.add - local.get $0 - local.get $8 + local.get $1 + local.get $1 + i64.const 100000000 + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $3 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 8012 i32.add - i32.load16_u - i32.store16 - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if + i64.load32_u local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 1 + i32.const 100 + i32.rem_u + i32.const 2 i32.shl + i32.const 8012 i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 i32.const 1 i32.shl i32.add - i32.load16_u - local.set $7 - local.get $4 - local.get $2 - i32.const 1 + local.get $3 + i32.const 10000 + i32.div_u + local.tee $3 + i32.const 100 + i32.div_u + i32.const 2 i32.shl + i32.const 8012 i32.add - i32.load16_u - local.set $8 + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $1 - i32.const 1 + i32.shl + i32.const 8012 i32.add - local.set $1 - br $for-loop|2 + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - local.tee $0 - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - local.get $0 - i32.const 65535 - i32.and - local.tee $0 - i32.gt_u local.get $0 local.get $1 - i32.gt_u - i32.sub + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i64) + (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $6 i64) + (local $7 i64) (local $8 i32) (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) local.get $1 - local.get $3 + f64.const 0 + f64.lt + local.tee $4 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $1 + f64.neg + local.set $1 + end local.get $2 - local.get $1 + if (result i64) + local.get $1 + f32.demote_f64 + i32.reinterpret_f32 + local.tee $8 + i32.const 2139095040 + i32.and + i32.const 23 + i32.shr_u + local.tee $9 + i32.const 1 + local.get $9 + select + i32.const 150 + i32.sub + local.set $5 + local.get $8 + i32.const 8388607 + i32.and + i64.extend_i32_u + local.get $9 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 23 + i64.shl + i64.add + else + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.set $5 + local.get $3 + i64.const 4503599627370495 + i64.and + local.get $8 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + end + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.get $3 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $6 + i64.clz + i32.wrap_i64 + local.tee $8 i32.sub + local.set $9 + local.get $6 + local.get $8 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $3 + local.get $3 + i64.const 8388608 + i64.const 4503599627370496 + local.get $2 + select + i64.eq i32.const 1 i32.add - local.tee $5 - local.get $3 + local.tee $2 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $5 + local.get $2 + i32.sub + local.get $9 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $9 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_sat_f64_s + local.tee $2 + local.get $2 + f64.convert_i32_s + local.get $1 + f64.ne + i32.add + i32.const 3 + i32.shr_s i32.const 1 - i32.and + i32.add + local.tee $2 + i32.const 3 + i32.shl + local.tee $5 i32.sub + global.set $~lib/util/number/_K local.get $5 + i32.const 9864 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $2 i32.const 1 - i32.and - local.get $3 - select + i32.shl + i32.const 10560 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - local.tee $6 - local.set $5 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store offset=8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $3 + local.get $3 + i64.clz + i64.shl + local.tee $3 + i64.const 4294967295 + i64.and + local.set $10 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_pow + local.tee $11 + i64.const 4294967295 + i64.and + local.tee $12 + i64.mul + local.get $10 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $13 + global.get $~lib/util/number/_frc_plus + local.tee $3 + i64.const 4294967295 + i64.and + local.set $14 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $7 + local.get $12 + i64.mul + local.get $12 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $15 + global.get $~lib/util/number/_frc_minus + local.tee $16 + i64.const 4294967295 + i64.and + local.set $3 + local.get $12 + local.get $16 + i64.const 32 + i64.shr_u + local.tee $16 + i64.mul + local.get $3 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $12 + local.get $7 + local.get $11 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul + local.get $15 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $14 + i64.mul + local.get $15 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $11 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + local.get $7 + i64.mul + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $10 + i64.mul + local.get $13 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $11 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $11 + local.get $7 + local.get $16 + i64.mul + local.get $12 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $7 + i64.mul + local.get $12 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $4 + call $~lib/util/number/genDigits + local.get $4 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $4 + i32.add + ) + (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + loop $for-loop|0 local.get $2 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 i32.lt_s if - local.get $0 - local.get $1 - i32.const 2 - i32.shl + local.get $2 + local.get $3 i32.add - local.tee $3 - i32.load + i32.load8_u local.set $5 - local.get $3 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength i32.const 1 - i32.add - local.set $1 - local.get $3 local.get $5 - i32.store local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 local.get $1 i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + local.get $2 i32.const 1 i32.add - local.set $4 - br $while-continue|2 + local.set $2 + br $for-loop|0 end end + i32.const 0 end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 + (func $~lib/typedarray/Uint8Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length i32.const 1 - i32.add + i32.sub local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + loop $for-loop|0 local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end end + i32.const -1 + local.set $2 end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $4 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" + loop $for-loop|0 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 + local.get $4 i32.lt_s if - local.get $0 - local.get $1 - i32.const 2 - i32.shl + local.get $2 + local.get $3 i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 local.get $0 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" local.get $2 i32.const 1 i32.add local.set $2 + br $for-loop|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 end + i32.const -1 + local.set $2 end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.lt_s - local.get $0 - local.get $1 - i32.gt_s - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 - local.get $1 - i32.sub - i32.const 1 - i32.add - local.tee $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $5 - i32.const 1 - i32.and - local.get $3 - select + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - local.tee $6 - local.set $5 - local.get $3 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - if - local.get $3 - local.set $5 - local.get $6 - local.set $3 - end - local.get $7 - i32.const 1 - i32.sub - local.set $6 - loop $while-continue|1 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store offset=8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store offset=8 - loop $while-continue|2 - local.get $1 - local.get $6 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 - local.get $8 - i32.store offset=4 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end - end + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) + loop $for-loop|0 local.get $2 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 i32.lt_s if - local.get $0 - local.get $1 - i32.const 2 - i32.shl + local.get $2 + local.get $3 i32.add - local.tee $3 - i32.load + i32.load8_u local.set $5 - local.get $3 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 local.get $5 - i32.store local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 local.get $1 i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" + drop + local.get $2 i32.const 1 i32.add - local.set $4 - br $while-continue|2 + local.set $2 + br $for-loop|0 end end + i32.const 1 end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 + (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 1 i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 + br_table $0of1 $1of1 $outOfRange end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.gt_u + i32.store local.get $0 local.get $1 - i32.lt_u - i32.sub + local.get $2 + call $~lib/typedarray/Uint64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.lt_u + i32.store local.get $0 local.get $1 - i32.gt_u - i32.sub + local.get $2 + call $~lib/typedarray/Uint32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - local.get $3 local.get $2 - local.get $1 + call $~lib/typedarray/Uint16Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.const 1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.tee $0 + local.get $2 i32.add - local.tee $7 + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.tee $2 + local.get $0 local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $7 - i32.const 1 - i32.and + i32.add + local.get $3 + local.get $0 + local.get $0 local.get $3 + i32.gt_s select - i32.add - local.set $7 - loop $for-loop|0 + local.get $3 + i32.const 0 + i32.lt_s + select + local.tee $0 + i32.lt_s + if local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load offset=8 - local.tee $8 - local.set $6 - local.get $3 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $8 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - if - local.get $5 - local.set $6 - local.get $8 - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 - local.get $8 - i64.store offset=16 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store offset=16 - loop $while-continue|2 - local.get $1 - local.get $3 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $9 - local.get $5 - i64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store offset=8 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end + local.get $4 + i32.add + local.get $1 + local.get $0 + local.get $2 + i32.sub + memory.fill end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i64) + (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) (local $6 i32) - (local $7 i64) - local.get $1 - local.get $2 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load + i32.store local.get $0 - local.get $1 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.tee $5 i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s + i32.gt_u if + local.get $5 + i32.const 1 + i32.shr_u + local.set $3 + local.get $5 + i32.const 1 + i32.sub + local.set $5 loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load offset=8 - local.get $6 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.lt_u if - local.get $0 + local.get $2 local.get $1 i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $6 i64.load - local.set $5 - local.get $3 - local.get $0 + local.set $4 + local.get $6 local.get $2 + local.get $5 + local.get $1 + i32.sub i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $6 i64.load i64.store + local.get $6 + local.get $4 + i64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $3 - local.get $5 - i64.store - local.get $2 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 1 i32.sub - local.set $2 - br $while-continue|1 + br_table $0of1 $1of1 $outOfRange end + unreachable end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $4 + i32.const 1 + i32.gt_u + if + local.get $4 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $2 + local.get $1 + i32.const 2 i32.shl i32.add - local.tee $1 - i64.load offset=8 + local.tee $6 + i32.load + local.set $4 + local.get $6 + local.get $2 + local.get $5 local.get $1 - i64.load + i32.sub i32.const 2 - global.set $~argumentsLength - local.get $3 + i32.shl + i32.add + local.tee $6 i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if + i32.store + local.get $6 local.get $4 + i32.store + local.get $1 i32.const 1 i32.add - local.set $4 - br $while-continue|2 + local.set $1 + br $while-continue|0 end end end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 + (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $6 - local.get $3 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $9 - local.get $6 - i32.const 1 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.tee $0 i32.add + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.gt_s + select + local.get $2 + i32.const 0 + i32.lt_s + select local.set $2 - loop $for-loop|0 + local.get $0 + local.get $3 + i32.add + local.get $3 + local.get $0 + local.get $0 + local.get $3 + i32.gt_s + select + local.get $3 + i32.const 0 + i32.lt_s + select + local.set $0 + block $__inlined_func$~lib/util/bytes/FILL$202 local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - i64.load - i64.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $9 - local.get $6 - i32.sub - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - i64.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - loop $for-loop|2 + i32.eqz local.get $1 - local.get $3 - i32.le_s + i32.const -1 + i32.eq + i32.or if - local.get $4 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - local.get $4 + local.get $0 local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $7) - i32.const 0 - i32.lt_s + i32.gt_s if - local.get $0 - local.get $1 - i32.const 3 + local.get $4 + local.get $2 + i32.const 2 i32.shl i32.add - local.get $7 - i64.store - local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 local.get $1 - i32.const 3 + local.get $0 + local.get $2 + i32.sub + i32.const 2 + i32.shl + memory.fill + end + br $__inlined_func$~lib/util/bytes/FILL$202 + end + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $4 + local.get $2 + i32.const 2 i32.shl i32.add - local.get $8 - i64.store + local.get $1 + i32.store local.get $2 i32.const 1 i32.add local.set $2 + br $for-loop|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i64.gt_s + i32.store local.get $0 - local.get $1 - i64.lt_s - i32.sub - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i64) (result i32) + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i64.lt_s + i32.store local.get $0 - local.get $1 - i64.gt_s - i32.sub - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i32) - local.get $1 - local.get $3 - local.get $2 - local.get $1 - i32.sub + call $~lib/typedarray/Int16Array#get:length + local.tee $4 i32.const 1 - i32.add - local.tee $7 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub - local.get $7 - i32.const 1 - i32.and - local.get $3 - select - i32.add - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $7 - i32.ge_s - if - local.get $0 - local.get $7 - i32.const 3 - i32.shl + i32.gt_u + if + local.get $4 + i32.const 1 + i32.shr_u + local.set $3 + local.get $4 + i32.const 2 + i32.sub + local.set $5 + loop $while-continue|0 + local.get $1 + i32.const 1 i32.add - local.tee $3 - i64.load offset=8 - local.tee $8 - local.set $6 local.get $3 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $8 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s + i32.lt_u if + local.get $2 local.get $5 - local.set $6 - local.get $8 - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|1 local.get $1 - local.get $3 - i32.le_s - if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 - local.get $8 - i64.store offset=16 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store offset=16 - loop $while-continue|2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $6 + i32.load + i32.const 16 + i32.rotr + local.set $7 + local.get $6 + local.get $2 local.get $1 - local.get $3 - i32.le_s - if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $9 - local.get $5 - i64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store offset=8 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $for-loop|0 - end - end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 + i32.const 1 i32.shl i32.add local.tee $6 - i64.load offset=8 + i32.load + i32.const 16 + i32.rotr + i32.store local.get $6 - i64.load + local.get $7 + i32.store + local.get $1 i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 i32.add - local.set $4 + local.set $1 br $while-continue|0 end end local.get $4 - local.set $2 + i32.const 1 + i32.sub + local.set $4 loop $while-continue|1 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.lt_u if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $0 local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - i64.store local.get $1 i32.const 1 + i32.shl i32.add - local.set $1 - local.get $3 + local.tee $5 + i32.load16_u + local.set $6 local.get $5 - i64.store local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 local.get $4 - i32.const 3 + local.get $1 + i32.sub + i32.const 1 i32.shl i32.add - local.tee $1 - i64.load offset=8 + local.tee $5 + i32.load16_u + i32.store16 + local.get $5 + local.get $6 + i32.store16 local.get $1 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 i32.const 1 i32.add - local.set $4 - br $while-continue|2 + local.set $1 + br $while-continue|1 end end end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 + (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $9 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - i64.load - i64.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $9 - local.get $6 - i32.sub - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - i64.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if - local.get $4 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect (type $7) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - local.get $6 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 1 i32.sub - local.set $6 - else - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $8 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 + br_table $0of1 $1of1 $outOfRange end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i64.gt_u + i32.store local.get $0 local.get $1 - i64.lt_u - i32.sub + local.get $2 + call $~lib/typedarray/Float64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i64) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i64.lt_u + i32.store local.get $0 local.get $1 - i64.gt_u - i32.sub + local.get $2 + call $~lib/typedarray/Float32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 49088 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 49088 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Float64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Float64Array#__uget + local.tee $5 + local.get $4 + f64.ne + if + i32.const 14896 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + local.get $5 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) (local $5 f32) - (local $6 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 758 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Float32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/typedarray/Float32Array#__uget + local.tee $5 + local.get $4 + f32.ne + if + i32.const 14544 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.promote_f32 + local.get $5 + f64.promote_f32 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 2 + f32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 4 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 4 + i64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 4 + i32.eq + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) (local $7 i32) - (local $8 f32) + (local $8 i32) (local $9 i32) local.get $1 local.get $3 @@ -8870,13 +8998,13 @@ i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $7 + local.get $5 i32.const 1 i32.and local.get $3 @@ -8890,77 +9018,221 @@ if local.get $0 local.get $7 - i32.const 2 - i32.shl i32.add local.tee $3 - f32.load offset=4 - local.tee $8 - local.set $6 - local.get $3 - f32.load + i32.load8_u offset=1 + local.tee $6 local.set $5 + local.get $3 + i32.load8_u + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $5 - local.get $8 + local.get $3 + local.get $6 local.get $4 i32.load - call_indirect (type $11) + call_indirect (type $0) i32.const 0 i32.le_s if - local.get $5 - local.set $6 - local.get $8 + local.get $3 local.set $5 + local.get $6 + local.set $3 end local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $6 loop $while-continue|1 local.get $1 - local.get $3 + local.get $6 i32.le_s if block $while-break|1 local.get $0 - local.get $3 - i32.const 2 - i32.shl + local.get $6 i32.add - local.tee $9 - f32.load - local.set $8 + local.tee $8 + i32.load8_u + local.set $9 i32.const 2 global.set $~argumentsLength - local.get $8 - local.get $5 + local.get $9 + local.get $3 local.get $4 i32.load - call_indirect (type $11) + call_indirect (type $0) i32.const 0 i32.le_s br_if $while-break|1 - local.get $9 local.get $8 - f32.store offset=8 - local.get $3 + local.get $9 + i32.store8 offset=2 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $6 + i32.add + local.get $3 + i32.store8 offset=2 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + local.tee $3 + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store8 offset=1 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $5 + i32.store8 offset=1 + local.get $7 i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 i32.shl i32.add + local.tee $3 + i64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength local.get $5 - f32.store offset=8 + local.get $8 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + i64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store offset=16 loop $while-continue|2 local.get $1 local.get $3 @@ -8969,11 +9241,11 @@ block $while-break|2 local.get $0 local.get $3 - i32.const 2 + i32.const 3 i32.shl i32.add local.tee $9 - f32.load + i64.load local.set $5 i32.const 2 global.set $~argumentsLength @@ -8981,13 +9253,13 @@ local.get $6 local.get $4 i32.load - call_indirect (type $11) + call_indirect (type $7) i32.const 0 i32.le_s br_if $while-break|2 local.get $9 local.get $5 - f32.store offset=4 + i64.store offset=8 local.get $3 i32.const 1 i32.sub @@ -8998,11 +9270,11 @@ end local.get $0 local.get $3 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $6 - f32.store offset=4 + i64.store offset=8 local.get $7 i32.const 2 i32.add @@ -9011,858 +9283,1231 @@ end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) (local $6 i32) - (local $7 f32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 + local.get $3 local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $0 local.get $1 + i32.sub i32.const 1 i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength + local.tee $5 local.get $3 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load offset=4 - local.get $6 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $11) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load offset=4 - local.get $1 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $11) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - local.get $2 + i32.sub i32.const 1 + i32.and i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $9 - local.get $6 + local.get $5 i32.const 1 + i32.and + local.get $3 + select i32.add - local.set $2 + local.set $7 loop $for-loop|0 - local.get $1 local.get $2 - i32.lt_s + local.get $7 + i32.ge_s if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + local.get $0 + local.get $7 i32.const 2 i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 i32.add - f32.load - f32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $9 + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 i32.const 2 i32.shl i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end local.get $0 local.get $6 i32.const 2 i32.shl i32.add - f32.load offset=4 - f32.store - local.get $6 - i32.const 1 + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 i32.add - local.set $6 - br $for-loop|1 + local.set $7 + br $for-loop|0 end end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - local.get $4 - local.get $2 - i32.const 2 + local.get $0 + local.get $7 + i32.const 1 i32.shl i32.add - f32.load - local.set $8 + local.tee $3 + i32.load16_u offset=2 + local.tee $6 + local.set $5 + local.get $3 + i32.load16_u + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 + local.get $3 + local.get $6 + local.get $4 i32.load - call_indirect (type $11) + call_indirect (type $0) i32.const 0 - i32.lt_s + i32.le_s if - local.get $0 + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store local.get $6 - i32.const 1 - i32.sub - local.set $6 - else - local.get $0 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_u + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store16 offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=4 + loop $while-continue|2 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store16 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end end - local.get $1 + local.get $0 + local.get $6 i32.const 1 + i32.shl i32.add - local.set $1 - br $for-loop|2 + local.get $5 + i32.store16 offset=2 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 end end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - local.get $2 - i32.xor - local.tee $2 + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i32.reinterpret_f32 - local.tee $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u local.get $3 - i32.xor - local.tee $3 - i32.gt_s local.get $2 - local.get $3 - i32.lt_s - i32.sub - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - f32.lt - local.get $0 local.get $1 - f32.gt i32.sub - ) - (func $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 f64) (result i32) - local.get $0 - local.get $1 - f64.lt - local.get $0 - local.get $1 - f64.gt + i32.const 1 + i32.add + local.tee $5 + local.get $3 i32.sub - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - return + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.add + local.tee $3 + i32.load8_s offset=1 + local.tee $6 + local.set $5 + local.get $3 + i32.load8_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.add + local.tee $8 + i32.load8_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store8 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 end - unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $6 + i32.add + local.get $3 + i32.store8 offset=2 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + local.tee $3 + i32.load8_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store8 offset=1 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $6 i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $5 + i32.store8 offset=1 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~start - call $start:std/typedarray ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) local.get $1 - i32.const 1073741820 + local.get $3 local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 19 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - i32.shl - local.tee $1 + i32.sub i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.tee $7 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load + i32.const 1 + i32.and i32.sub - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $7 + i32.const 1 + i32.and + local.get $3 + select i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + i64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + i64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store offset=8 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 local.get $1 - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.tee $5 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.and + i32.sub + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load offset=4 + local.tee $6 + local.set $5 + local.get $3 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 local.get $1 - local.get $0 + i32.sub i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int16Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $5 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=8 i32.const 1 - i32.shr_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.and i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $5 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s offset=2 + local.tee $6 + local.set $5 + local.get $3 + i32.load16_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store16 offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=4 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 + local.get $8 + i32.store16 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 offset=2 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local $8 f64) + (local $9 i32) local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 local.get $1 - local.get $0 + i32.sub i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.tee $7 + local.get $3 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load offset=8 + local.tee $8 + local.set $6 + local.get $3 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store offset=8 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f32) + (local $6 f32) + (local $7 i32) + (local $8 f32) + (local $9 i32) local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 local.get $1 - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.sub + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + local.tee $7 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $7 + i32.const 1 + i32.and + local.get $3 + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load offset=4 + local.tee $8 + local.set $6 + local.get $3 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $8 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $8 + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $9 + local.get $8 + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $9 + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end ) - (func $~lib/typedarray/Int32Array#get:length (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -9881,64 +10526,86 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + return end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 call $~lib/rt/itcms/__new local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $1 local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store + local.get $2 + call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) - (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9953,191 +10620,107 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - ) - (func $~lib/typedarray/Int64Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + return end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.sub local.get $0 - i32.load offset=8 - i32.const 3 + local.get $0 + i32.const 31 i32.shr_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.shl + local.tee $0 + select + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 1 + i32.shl local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 + i32.const 2 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_dec_lut local.get $0 - ) - (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 45 + i32.store16 end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) - (func $std/typedarray/testInstantiate (param $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 48 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10153,558 +10736,733 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 48 - memory.fill + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 - local.get $1 i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.tee $2 + i32.const 0 local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint8Array#constructor + i32.const 0 + i32.lt_s + select + i32.add local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 37 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 332 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store local.get $1 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + i32.add + i32.load8_u global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.get $0 - i32.ne - if + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $3 + local.get $1 + i32.lt_u + if + i32.const 1360 + i32.const 1632 + i32.const 1860 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + i32.const -1 + i32.eq + if (result i32) + local.get $3 + local.get $1 + i32.sub + else + i32.const 1056 + i32.const 1632 + i32.const 1869 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.set $2 + else + local.get $1 + local.get $2 + i32.add + local.get $3 + i32.gt_s + if + i32.const 1056 + i32.const 1632 + i32.const 1874 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + local.get $3 + local.get $0 + i32.store + local.get $3 + local.get $0 + call $~lib/rt/itcms/__link + local.get $3 + local.get $2 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 - local.get $0 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1409 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.ne + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Uint8Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 48 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.ne + i32.load offset=8 + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 49 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 190 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.store local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#at (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 52 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 local.get $0 - i32.const 1 - i32.shl - i32.ne + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 53 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1185 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.ne + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 54 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store offset=24 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 57 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 901 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + i32.load global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.store offset=28 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 - local.get $0 - i32.const 2 - i32.shl - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 63 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=32 - global.get $~lib/memory/__stack_pointer + i32.store local.get $1 - i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u if - i32.const 0 - i32.const 1568 - i32.const 67 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 617 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 local.get $0 - i32.const 3 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + i32.load16_u global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store offset=36 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 72 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 - local.get $0 - i32.const 3 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store offset=40 + i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i32.store offset=8 local.get $1 - i32.load offset=8 - local.get $0 - i32.const 2 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 78 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int8Array#get:length + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length local.get $0 - i32.ne + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 79 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=44 + i32.store offset=8 + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i32.store offset=8 local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.load offset=4 + local.get $2 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 82 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=8 - local.get $0 - i32.const 3 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/typedarray/Int8Array#fill global.get $~lib/memory/__stack_pointer - i32.const 48 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -10729,34 +11487,40 @@ local.get $1 local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 i32.ge_u if i32.const 1360 i32.const 1632 - i32.const 747 - i32.const 64 + i32.const 48 + i32.const 33 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl i32.add - local.get $2 - i32.store + i32.load8_s global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#at (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -10781,14 +11545,23 @@ local.get $1 local.get $0 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 i32.ge_u if i32.const 1360 i32.const 1632 - i32.const 736 - i32.const 64 + i32.const 1043 + i32.const 33 call $~lib/builtins/abort unreachable end @@ -10798,19 +11571,18 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + i64.load global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -10841,29 +11613,6 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - i32.load - local.tee $5 - i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - i32.load offset=4 local.get $1 i32.const 0 i32.lt_s @@ -10871,9 +11620,9 @@ local.get $1 local.get $3 i32.add - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select @@ -10885,12 +11634,8 @@ i32.lt_s select end - local.tee $0 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $4 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $2 i32.const 0 i32.lt_s @@ -10898,9 +11643,9 @@ local.get $2 local.get $3 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select @@ -10912,26 +11657,46 @@ i32.lt_s select end - local.tee $1 - local.get $0 - local.get $0 local.get $1 - i32.lt_s + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s select + local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.sub + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl - i32.store offset=8 + i32.add + local.get $2 + i32.const 2 + i32.shl + memory.copy global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 ) - (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10946,22 +11711,163 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/array/Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + local.get $3 + i32.add + i32.lt_s + end if i32.const 1360 i32.const 1632 - i32.const 1457 - i32.const 64 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + i32.const 2147483647 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 759 + i32.const 33 call $~lib/builtins/abort unreachable end @@ -10971,11 +11877,71 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#at (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 local.get $2 - f64.store + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 475 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -11103,23 +12069,9 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i32) - (local $17 f64) - (local $18 f64) + (func $~lib/typedarray/Float64Array#at (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local $3 f64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -11138,4670 +12090,4225 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - f64.load - local.set $9 - local.get $0 - f64.load offset=8 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store - local.get $0 - f64.load offset=16 - local.set $18 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $18 - local.get $9 - local.get $17 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $18 - local.get $2 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store offset=8 - local.get $0 - local.get $9 - local.get $18 - local.get $1 - select - f64.store offset=16 - end - local.get $0 - f64.load - local.set $9 - local.get $0 - f64.load offset=8 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - local.tee $1 - select - f64.store - local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - f64.store offset=8 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1469 i32.const 33 - local.get $1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#at (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $1 + i32.const 0 + i32.lt_s + select + i32.add + local.tee $1 + local.get $2 + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1327 + i32.const 33 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 i32.clz i32.sub local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $11 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 3 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if i32.const 0 + i32.const 1504 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if local.get $1 - i32.const 1 - i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store local.get $0 - i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 - i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 - i32.lt_s + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $10 + local.get $0 + i32.load + i32.const -2 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $14 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $14 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $15 - local.get $11 - i32.add - local.tee $16 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $15 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $16 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 - i32.add - local.get $4 + i32.rotl + i32.and i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $12 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort unreachable end - i32.const 1696 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1696 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 i32.store end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array#sort - global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.lt_u if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 233 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $4 local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 1446 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.add + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1504 + i32.const 234 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $4 + i32.const 4 + i32.sub local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 320 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.const 255 - local.get $2 - i32.sub - i32.const 31 - i32.shr_s - local.get $2 - i32.or local.get $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 1360 - i32.const 1632 - i32.const 309 - i32.const 45 + i32.const 0 + i32.const 1504 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.store offset=4 local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + local.get $3 + i32.store offset=8 + local.get $3 if - i32.const 1360 - i32.const 1632 - i32.const 36 - i32.const 45 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $1 + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.tee $0 - local.get $2 + local.get $5 + i32.const 2 + i32.shl i32.add - local.get $2 - local.get $0 + local.tee $0 local.get $0 + i32.load offset=4 + i32.const 1 local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.tee $2 - local.get $0 - local.get $3 - i32.add - local.get $3 - local.get $0 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.tee $0 - i32.lt_s + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $2 - local.get $4 - i32.add + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 49088 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + end local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.get $2 - i32.sub - memory.fill - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/rt/itcms/toSpace + local.set $2 local.get $0 i32.load offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 16000 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 16004 + i32.add + i32.load + i32.const 32 + i32.and end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 + local.set $3 + local.get $2 i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 25 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.set $1 local.get $0 - i32.store + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 local.get $1 local.get $0 + local.get $1 i32.load offset=4 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 ) - (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.load offset=12 - i32.ge_u - if - i32.const 1360 - i32.const 1760 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - i32.ne - br_if $folding-inner1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + i32.load + call $~lib/rt/itcms/__visit global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 1 return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int8Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - i32.const 2147483647 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $2 + i32.const 1 + i32.sub + local.tee $6 local.get $3 - call $~lib/typedarray/Int8Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - i32.load - local.tee $5 - i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $0 + local.set $7 + local.get $6 + i32.const 1 i32.add - i32.store offset=4 - local.get $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 + local.set $2 + loop $for-loop|0 local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 local.get $2 - local.get $3 i32.lt_s - select - end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/typedarray/Int32Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $0 - i32.add - local.get $2 - local.get $0 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $0 - local.get $3 - i32.add - local.get $3 - local.get $0 - local.get $0 - local.get $3 - i32.gt_s - select - local.get $3 - i32.const 0 - i32.lt_s - select - local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$202 - local.get $1 - i32.eqz - local.get $1 - i32.const -1 - i32.eq - i32.or if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $4 + i32.add local.get $0 local.get $2 - i32.gt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $0 - local.get $2 - i32.sub - i32.const 2 - i32.shl - memory.fill - end - br $__inlined_func$~lib/util/bytes/FILL$202 + i32.add + i32.load8_u + i32.store8 + br $for-loop|0 end - loop $for-loop|0 + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add local.get $0 + local.get $6 + i32.add + i32.load8_u offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.add + i32.load8_u + local.set $8 local.get $2 - i32.gt_s + local.get $4 + i32.add + i32.load8_u + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $7 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s if - local.get $4 - local.get $2 - i32.const 2 - i32.shl + local.get $0 + local.get $1 i32.add + local.get $8 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 local.get $1 - i32.store + i32.add + local.get $7 + i32.store8 local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1360 - i32.const 1760 - i32.const 114 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.tee $6 + local.get $3 i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $9 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + i64.load + i64.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $folding-inner0 + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 local.get $1 - call $~lib/array/Array#get:length local.get $3 - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - loop $for-loop|0 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + local.get $4 local.get $2 - local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $7) + i32.const 0 i32.lt_s if - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__get - local.set $4 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#__get - local.get $4 - i32.ne - br_if $folding-inner0 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|0 end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 ) - (func $~lib/typedarray/Int32Array#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - i32.const 2147483647 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $2 + i32.const 1 + i32.sub + local.tee $6 local.get $3 - call $~lib/typedarray/Int32Array#fill - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 local.get $1 - local.get $3 + local.get $2 i32.lt_s - select + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 + loop $for-loop|1 local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 + local.get $6 i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 local.get $3 - i32.lt_s - select + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 + i32.const 1 + i32.sub + local.tee $6 local.get $3 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl i32.add - local.get $2 - i32.const 2 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.set $7 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/typedarray/Int32Array#slice@varargs (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load16_u + i32.store16 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $outOfRange - global.get $~argumentsLength - br_table $1of2 $1of2 $2of2 $outOfRange + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $7 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end - i32.const 2147483647 - local.set $1 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#slice - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $4 + local.tee $6 local.get $3 - local.get $4 - i32.lt_s - select - local.set $5 - local.get $0 - i32.load offset=4 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select - end - local.tee $1 - i32.const 2 - i32.shl i32.add - local.get $3 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - local.get $4 i32.lt_s - select + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $4 + i32.add + local.get $0 + local.get $2 + i32.add + i32.load8_s + i32.store8 + br $for-loop|0 + end end - local.tee $2 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $4 - local.get $5 - i32.add - local.tee $3 - i32.const 0 + loop $for-loop|1 local.get $3 - i32.const 0 - i32.gt_s - select - else - local.get $5 - local.get $4 - local.get $4 - local.get $5 + local.get $6 i32.gt_s - select - end - local.get $2 - i32.sub - local.tee $2 - local.get $4 - local.get $1 - i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - i32.const 2 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Int32Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add + local.get $0 + local.get $6 + i32.add + i32.load8_s offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.add + i32.load8_s + local.set $8 + local.get $2 + local.get $4 + i32.add + i32.load8_s + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $7 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.get $8 + i32.store8 + local.get $6 + i32.const 1 i32.sub - br_table $0of1 $1of1 $outOfRange + local.set $6 + else + local.get $0 + local.get $1 + i32.add + local.get $7 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end - i32.const 2147483647 - local.set $3 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/typedarray/Int32Array#copyWithin - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 178 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 + local.tee $6 + local.get $3 i32.add - local.get $2 - i32.store8 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $9 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8Array#reduce (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $5 + local.set $2 loop $for-loop|0 + local.get $1 local.get $2 - local.get $5 i32.lt_s if local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 local.get $4 i32.add - i32.load8_u - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 local.get $0 - local.get $1 - i32.load - call_indirect (type $6) - local.set $3 - local.get $2 - i32.const 1 + local.get $10 i32.add - local.set $2 + i64.load + i64.store br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 463 - i32.const 64 - call $~lib/builtins/abort - unreachable + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $7) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 i32.const 1 - i32.shl + i32.sub + local.tee $6 + local.get $3 i32.add - local.get $2 - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $7 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 605 - i32.const 64 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 889 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.tee $6 + local.get $3 i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.set $7 + local.get $6 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load16_s + i32.store16 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 1031 - i32.const 64 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $7 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 i32) + (local $10 i32) local.get $2 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f64.load + f64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $10) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + f32.load + f32.store + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 1173 - i32.const 64 - call $~lib/builtins/abort - unreachable + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $5 + i32.load + call_indirect (type $11) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 3 - i32.shl - i32.add local.get $2 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.eq if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store local.get $1 + i32.add + i32.load8_u + local.get $1 + i32.const 1 + i32.add + local.tee $4 local.get $0 - i32.load offset=8 + i32.add + i32.load8_u i32.const 2 - i32.shr_u - i32.ge_u + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s if - i32.const 1360 - i32.const 1632 - i32.const 1315 - i32.const 64 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_u offset=1 + local.get $5 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_u offset=1 + local.get $1 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) local.get $1 - i32.const 2 - i32.shl - i32.add local.get $2 - f32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.eq if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 0 local.get $1 - i32.const 0 - i32.lt_s - select + i32.const 3 + i32.shl i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 48 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i64.load local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=4 + i32.const 1 i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $4 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 0 - local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 - local.get $2 - i32.ge_u + i32.gt_s if - i32.const 1360 - i32.const 1632 - i32.const 190 - i32.const 33 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 0 + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 332 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.load local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=8 i32.const 1 - i32.shr_u - local.tee $2 - i32.const 0 - local.get $1 - i32.const 0 - i32.lt_s - select i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 475 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 + local.tee $4 + i32.const 2 i32.shl i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint16Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 0 + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 617 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 i32.const 1 i32.shl i32.add i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 0 local.get $1 - i32.const 0 - i32.lt_s - select + i32.const 1 i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 759 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 + local.tee $4 + i32.const 1 i32.shl i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#at (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + call_indirect (type $0) + i32.const 0 + i32.gt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u offset=2 + local.get $5 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u offset=2 + local.get $1 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 0 + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 901 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#at (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.load8_s local.get $1 + i32.const 1 + i32.add + local.tee $4 local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_s offset=1 + local.get $5 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_s + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_s offset=1 + local.get $1 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 1043 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 i32.const 3 i32.shl i32.add i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#at (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store local.get $1 - local.get $0 - i32.load offset=8 + i32.const 1 + i32.add + local.tee $4 i32.const 3 - i32.shr_u - local.tee $2 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 1185 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.load + local.get $0 + local.get $1 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#at (param $0 i32) (param $1 i32) (result f32) - (local $2 i32) - (local $3 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 0 - local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 - local.get $2 - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 1327 - i32.const 33 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + local.tee $4 i32.const 2 i32.shl i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#at (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local $3 f64) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 0 + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 0 - i32.lt_s - select - i32.add - local.tee $1 local.get $2 - i32.ge_u + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 1469 - i32.const 33 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 + i32.const 1 i32.shl i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8Array#reduceRight (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.load16_s local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length i32.const 1 - i32.sub - local.set $2 - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 local.get $4 - i32.add - i32.load8_u - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $6) - local.set $3 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_s offset=2 + local.get $5 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3600 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3600 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=16 - loop $for-loop|0 + local.set $2 + loop $while-continue|1 + local.get $1 local.get $2 - local.get $4 i32.lt_s if - local.get $2 - local.get $6 - i32.add - i32.load8_s - local.set $7 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $3 + local.get $1 + i32.const 1 + i32.shl i32.add - local.get $7 - local.get $2 + local.tee $3 + i32.load16_s + local.set $5 + local.get $3 local.get $0 - i32.const 3600 - i32.load - call_indirect (type $1) - i32.store8 local.get $2 i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + i32.store16 + local.get $1 + i32.const 1 i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub local.set $2 - br $for-loop|0 + br $while-continue|1 end end - local.get $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_s offset=2 + local.get $1 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 ) - (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + local.get $2 + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 167 - i32.const 45 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load local.get $0 - i32.load offset=4 + local.get $1 + i32.const 1 i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $4 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3632 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3632 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=16 - loop $for-loop|0 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 local.get $4 - i32.lt_s - if - local.get $2 - local.get $6 - i32.add - i32.load8_u - local.set $7 - global.get $~lib/memory/__stack_pointer + i32.gt_s + if (result i32) local.get $0 - i32.store offset=8 + local.get $4 i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 global.set $~argumentsLength - local.get $2 local.get $3 - i32.add - local.get $7 - local.get $2 - local.get $0 - i32.const 3632 i32.load - call_indirect (type $1) - i32.store8 - local.get $2 + call_indirect (type $10) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $4 + br $while-continue|0 end end - local.get $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3664 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3664 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=16 - loop $for-loop|0 + local.set $2 + loop $while-continue|1 + local.get $1 local.get $2 - local.get $4 i32.lt_s if - local.get $2 - local.get $6 - i32.add - i32.load8_u - local.set $7 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + local.get $1 i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $3 + i32.shl i32.add - local.get $7 - local.get $2 + local.tee $3 + f64.load + local.set $5 + local.get $3 local.get $0 - i32.const 3664 - i32.load - call_indirect (type $1) - i32.store8 local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + f64.store + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - local.get $3 - i32.store - local.get $1 - local.get $3 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + local.get $3 + local.get $5 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 ) - (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u + local.get $2 + i32.eq if - i32.const 1360 - i32.const 1632 - i32.const 452 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load local.get $0 - i32.load offset=4 local.get $1 i32.const 1 - i32.shl i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.tee $4 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3696 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3696 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 local.get $4 - i32.lt_s - if + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength local.get $3 + i32.load + call_indirect (type $11) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 i32.shl - local.tee $8 i32.add - i32.load16_s - local.set $9 - global.get $~lib/memory/__stack_pointer + local.tee $3 + f32.load + local.set $5 + local.get $3 local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength local.get $2 - local.get $8 + i32.const 2 + i32.shl i32.add - local.get $9 + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) local.get $0 - i32.const 3696 - i32.load - call_indirect (type $1) - i32.store16 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $4 + br $while-continue|2 end end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $4 ) - (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.store + i32.const 255 + i32.and + local.tee $0 local.get $1 + i32.const 255 + i32.and + local.tee $1 + i32.gt_u local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 594 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 255 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 local.get $1 + i32.const 255 + i32.and + local.set $1 + i32.const 3 + local.get $1 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 100 + i32.ge_u + select + local.set $2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>" - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3728 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3728 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.get $1 + i64.const 10 + i64.lt_u + if local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 1 - i32.shl - local.tee $7 + local.get $1 + i64.const 48 + i64.or + i64.store16 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 + return + end + local.get $0 + local.set $2 + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 + i32.const 100 + i32.lt_u + if (result i32) local.get $3 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl - local.tee $8 i32.add - i32.load16_u - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + else + local.get $3 + i32.const 10000 + i32.ge_u i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 i32.add - local.get $9 local.get $3 - local.get $0 - i32.const 3728 - i32.load - call_indirect (type $1) - i32.store16 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) local.get $3 - i32.const 1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u i32.add - local.set $3 - br $for-loop|0 end end - local.get $1 - local.get $2 - i32.store - local.get $1 + local.set $0 local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 local.get $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get + i32.const 48 + i32.or + i32.store16 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 + return + end + local.get $0 + local.get $1 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u i32.const 3 - call $~lib/builtins/abort - unreachable + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add end - global.get $~lib/memory/__stack_pointer + else local.get $1 - i32.store offset=4 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $2 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $1 + i32.const 65535 + i32.and + local.set $1 + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) local.get $1 + i32.const 10 + i32.ge_u i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.add + else local.get $1 - i32.store offset=4 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add local.get $1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 1000 + i32.ge_u i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.set $2 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $2 ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -128 + i32.eq + if + local.get $0 + i64.const 15762813447372845 + i64.store + i32.const 4 + return + end local.get $0 + i32.const 45 + i32.store16 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3760 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3760 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend8_s + local.tee $3 + i32.const 10 + i32.lt_u + if local.get $0 - i32.store offset=8 + local.get $3 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $1 + i32.extend8_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i64.const 0 + i64.lt_s + local.tee $3 + if local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $1 + i64.const 10 + i64.lt_u + if local.get $4 - i32.const 2 - i32.shl - local.tee $7 + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $3 i32.const 1 - call $~lib/rt/itcms/__new + i32.add + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 i32.add - i32.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + else + local.get $2 + i32.const 10000 + i32.ge_u i32.const 3 - global.set $~argumentsLength + i32.add local.get $2 - local.get $8 + i32.const 1000 + i32.ge_u i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3760 - i32.load - call_indirect (type $1) - i32.store - local.get $3 - i32.const 1 + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u i32.add - local.set $3 - br $for-loop|0 end end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + local.set $0 + local.get $4 local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $4 local.get $1 - i32.store offset=4 local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.tee $0 + call $~lib/util/number/utoa64_dec_lut end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $3 + i32.add ) - (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 0 i32.lt_s + local.tee $2 if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u + i32.const 10 + i32.lt_u if - i32.const 1360 - i32.const 1632 - i32.const 878 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $0 + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $3 + i32.const -32768 + i32.eq + if + local.get $0 + i64.const 15481338470793261 + i64.store + local.get $0 + i32.const 3670070 + i32.store offset=8 + i32.const 6 + return + end local.get $0 + i32.const 45 + i32.store16 i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3792 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3792 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + local.set $1 + end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.set $0 + local.get $1 + i32.extend16_s + local.tee $3 + i32.const 10 + i32.lt_u + if local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 2 - i32.shl - local.tee $8 - i32.add - i32.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3792 - i32.load - call_indirect (type $1) - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + i32.const 48 + i32.or + i32.store16 local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + i32.extend16_s + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else local.get $1 - i32.store offset=4 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + local.get $3 + i32.add + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.1 (result i32) local.get $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne + f64.const 0 + f64.eq if - i32.const 0 - i32.const 1568 - i32.const 388 + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable + br $~lib/util/number/dtoa_buffered_impl|inlined.1 end - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne + f64.sub + f64.const 0 + f64.ne if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort + local.get $1 + local.get $1 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + else + local.get $1 + f64.const 0 + f64.lt + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.1 + end unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 local.get $1 - i32.store offset=4 + i32.const 0 + call $~lib/util/number/dtoa_core + end + ) + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f32) (result i32) + (local $2 f64) + (local $3 i32) + block $~lib/util/number/dtoa_buffered_impl|inlined.0 (result i32) local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne + f64.promote_f32 + local.tee $2 + f64.const 0 + f64.eq if - i32.const 0 - i32.const 1568 - i32.const 390 + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 i32.const 3 - call $~lib/builtins/abort + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end + local.get $2 + local.get $2 + f64.sub + f64.const 0 + f64.ne + if + local.get $2 + local.get $2 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + else + local.get $2 + f64.const 0 + f64.lt + local.tee $3 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $3 + i32.const 8 + i32.add + br $~lib/util/number/dtoa_buffered_impl|inlined.0 + end unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $0 + local.get $2 + i32.const 1 + call $~lib/util/number/dtoa_core end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) - (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) + (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15816,262 +16323,215 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1360 - i32.const 1632 - i32.const 1020 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 local.get $0 i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 i32.add - i64.load + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) + (local $4 i64) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3824 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3824 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 3 - i32.shl - local.tee $8 - i32.add - i64.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3824 - i32.load - call_indirect (type $24) - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + call $~lib/typedarray/Int8Array#get:length local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 + local.get $3 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne + i32.lt_s + end + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 390 + local.get $0 + local.get $2 + i32.add + local.get $1 + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + i64.load + local.tee $4 + i32.wrap_i64 + local.tee $5 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i64.extend_i32_s + i32.const 255 + local.get $5 + i32.sub + i32.const 31 + i32.shr_s + i64.extend_i32_s + local.get $4 + i64.or + i64.and + i64.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16086,262 +16546,405 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + local.get $3 + i32.add + i32.lt_s + end if i32.const 1360 i32.const 1632 - i32.const 1162 - i32.const 64 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=8 + local.get $2 local.get $0 i32.load offset=4 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 3 - i32.shl + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.const 255 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.tee $1 + i32.sub + i32.const 31 + i32.shr_s + local.get $1 + i32.or + local.get $1 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i64.load + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/typedarray/Uint8Array#join global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3856 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3856 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $7 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $3 - i32.const 3 - i32.shl - local.tee $8 - i32.add - i64.load - local.set $9 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 - local.get $0 - i32.const 3856 - i32.load - call_indirect (type $24) - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.tee $1 + i32.const 0 local.get $1 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.gt_s + select + else local.get $1 - i32.store offset=4 + local.get $2 local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#reduceRight (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $6) + local.set $3 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#reduce (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $6) + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) + (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16356,622 +16959,516 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $4) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 1360 - i32.const 1632 - i32.const 1304 - i32.const 64 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $1 local.get $0 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl i32.add - f32.load + i32.load8_u global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3888 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3888 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $7 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint64Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) loop $for-loop|0 - local.get $3 + local.get $2 local.get $4 i32.lt_s if - local.get $6 local.get $3 - i32.const 2 + local.get $2 + i32.const 3 i32.shl - local.tee $8 i32.add - f32.load - local.set $9 + i64.load + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 1 + local.get $5 local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 local.get $0 - i32.const 3888 + local.get $1 i32.load - call_indirect (type $29) - f32.store - local.get $3 + call_indirect (type $8) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" - (local $0 i32) + (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) + (local $4 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3920 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3920 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $7 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=16 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s + local.get $2 + i32.const 0 + i32.ge_s if - local.get $6 local.get $3 + local.get $2 i32.const 3 i32.shl - local.tee $8 i32.add - f64.load - local.set $9 + i64.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength local.get $2 - local.get $8 - i32.add - local.get $9 - local.get $3 local.get $0 - i32.const 3920 + local.get $1 i32.load - call_indirect (type $30) - f64.store - local.get $3 + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + local.get $2 i32.const 1 - i32.add - local.set $3 + i32.sub + local.set $2 br $for-loop|0 end end - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 - i32.store offset=4 - local.get $1 - local.get $7 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 388 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 389 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if + local.get $3 local.get $2 - local.get $7 + i32.const 3 + i32.shl i32.add - i32.load8_s - local.set $5 + i64.load global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 3952 + local.get $0 + local.get $1 i32.load - call_indirect (type $1) - if - local.get $0 - local.get $4 - i32.add - local.get $5 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" local.get $2 i32.const 1 i32.add @@ -16979,262 +17476,87 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Uint8Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 3984 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3984 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if + local.get $3 local.get $2 - local.get $7 + i32.const 3 + i32.shl i32.add - i32.load8_u + i64.load local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 0 local.get $5 local.get $2 - local.get $8 - i32.const 3984 + local.get $0 + local.get $1 i32.load - call_indirect (type $1) - if - local.get $0 - local.get $4 - i32.add - local.get $5 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $8) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -17242,128 +17564,291 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + local.tee $1 + i32.const 0 local.get $1 i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.gt_s + select + else local.get $1 - i32.store offset=4 + local.get $2 local.get $1 + local.get $2 + i32.lt_s + select + end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" - (local $0 i32) + (func $~lib/typedarray/Uint32Array#join (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -17375,57 +17860,22 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4016 - i32.store offset=8 + i32.const 9584 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17433,179 +17883,144 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4016 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $3 + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1413 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $2 - local.get $7 - i32.add - i32.load8_u - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $2 - local.get $8 - i32.const 4016 - i32.load - call_indirect (type $1) - if - local.get $0 - local.get $4 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl i32.add local.get $5 - i32.store8 - local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 + br $for-loop|0 end - local.get $2 - i32.const 1 + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 end - end - local.get $1 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 49120 @@ -17615,158 +18030,157 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Int16Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 + local.get $3 local.get $2 - i32.const 1 + i32.const 2 i32.shl i32.add - i32.load16_s - local.set $5 + i32.load global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 4048 + local.get $0 + local.get $1 i32.load call_indirect (type $1) - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" local.get $2 i32.const 1 i32.add @@ -17774,241 +18188,335 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) local.get $1 local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 + local.tee $1 i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $1 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.gt_s + select + else local.get $1 - i32.store offset=4 + local.get $2 local.get $1 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + local.get $2 + i32.lt_s + select end - i32.const 49120 - i32.const 49168 - i32.const 1 + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Uint16Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4080 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4080 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 + local.get $3 local.get $2 i32.const 1 i32.shl @@ -18016,29 +18524,19 @@ i32.load16_u local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 1 local.get $5 local.get $2 - local.get $8 - i32.const 4080 + local.get $0 + local.get $1 i32.load call_indirect (type $1) - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -18046,131 +18544,22 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" - (local $0 i32) + (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -18182,57 +18571,22 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Int32Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4112 - i32.store offset=8 + i32.const 9584 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -18240,188 +18594,144 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4112 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $3 + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1411 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $7 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + end + local.get $6 + i32.eqz + if local.get $5 - local.get $2 - local.get $8 - i32.const 4112 - i32.load - call_indirect (type $1) + i32.load16_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + local.get $6 + i32.mul + i32.const 10 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s if - local.get $4 local.get $0 - i32.const 2 + local.get $1 + i32.const 1 i32.shl i32.add local.get $5 - i32.store - local.get $0 + local.get $3 i32.const 1 + i32.shl i32.add - local.set $0 + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $2 - i32.const 1 + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 end - end - local.get $1 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 49120 @@ -18431,158 +18741,157 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Uint32Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4144 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4144 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 + local.get $3 local.get $2 - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load - local.set $5 + i32.load16_u global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - local.get $5 local.get $2 - local.get $8 - i32.const 4144 + local.get $0 + local.get $1 i32.load call_indirect (type $1) - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" local.get $2 i32.const 1 i32.add @@ -18590,271 +18899,87 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const -1 + local.set $2 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4176 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4176 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 + local.get $3 local.get $2 - i32.const 3 + i32.const 1 i32.shl i32.add - i64.load + i32.load16_u local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 0 local.get $5 local.get $2 - local.get $8 - i32.const 4176 + local.get $0 + local.get $1 i32.load - call_indirect (type $8) - if - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -18862,271 +18987,158 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Uint64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4208 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4208 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $7 local.get $2 - i32.const 3 - i32.shl + local.get $3 i32.add - i64.load + i32.load8_s local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 1 local.get $5 local.get $2 - local.get $8 - i32.const 4208 + local.get $0 + local.get $1 i32.load - call_indirect (type $8) - if - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end + call_indirect (type $1) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -19134,193 +19146,405 @@ br $for-loop|0 end end - local.get $1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Float32Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.get $1 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $1 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set + i32.const 16320 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 4240 - i32.store offset=8 + i32.const 9584 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19328,460 +19552,140 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4240 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $3 + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1408 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $7 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + end + local.get $6 + i32.eqz + if local.get $5 - local.get $2 - local.get $8 - i32.const 4240 - i32.load - call_indirect (type $14) + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s if - local.get $4 local.get $0 - i32.const 2 + local.get $1 + i32.const 1 i32.shl i32.add + local.get $3 local.get $5 - f32.store - local.get $0 - i32.const 1 i32.add - local.set $0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - local.get $4 - local.get $0 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Float64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4272 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4272 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 14 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 3 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $2 - local.get $8 - i32.const 4272 - i32.load - call_indirect (type $15) - if - local.get $4 - local.get $0 - i32.const 3 - i32.shl + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 i32.add - local.get $5 - f64.store - local.get $0 + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 + br $for-loop|0 end - local.get $2 - i32.const 1 + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 end - end - local.get $1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 49120 @@ -19791,11 +19695,10 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -19817,64 +19720,64 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" loop $for-loop|0 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if local.get $2 local.get $3 i32.add i32.load8_s - local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - i32.const 1 - local.get $5 local.get $2 local.get $0 local.get $1 i32.load call_indirect (type $1) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" - drop + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 br $for-loop|0 end end - i32.const 0 + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19900,134 +19803,45 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" loop $for-loop|0 local.get $2 local.get $4 i32.lt_s if - local.get $3 local.get $2 - i32.const 1 - i32.shl + local.get $3 i32.add - i32.load16_s - local.set $5 + i32.load8_s global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - i32.const 1 - local.get $5 local.get $2 local.get $0 local.get $1 i32.load call_indirect (type $1) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" - drop + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" local.get $2 i32.const 1 i32.add @@ -20035,14 +19849,16 @@ br $for-loop|0 end end - i32.const 0 + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20068,50 +19884,49 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) loop $for-loop|0 local.get $2 local.get $4 i32.lt_s if - local.get $3 local.get $2 - i32.const 1 - i32.shl + local.get $3 i32.add - i32.load16_u + i32.load8_s local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - i32.const 1 + i32.const 0 local.get $5 local.get $2 local.get $0 local.get $1 i32.load call_indirect (type $1) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" drop local.get $2 i32.const 1 @@ -20120,18 +19935,17 @@ br $for-loop|0 end end - i32.const 0 + i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20153,72 +19967,93 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Uint32Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20236,66 +20071,25 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -20323,25 +20117,25 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 loop $for-loop|0 local.get $2 local.get $4 @@ -20382,11 +20176,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20408,155 +20200,76 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $8) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16320 + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $1 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $14) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i64.load8_u + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 0 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20578,151 +20291,59 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $15) - br_if $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + local.get $0 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16320 + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 6 + i32.add i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 i32.load offset=4 - local.set $3 + i32.const 48 + i32.add global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 3 + i32.shl + memory.copy global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20751,59 +20372,77 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.load offset=4 + i32.const 32 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i64.load16_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20829,64 +20468,78 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 11264 i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int64Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" - loop $for-loop|0 + i32.load offset=4 + i32.const 56 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i64.load8_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20912,147 +20565,449 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 11008 i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int64Array#get:length + local.get $1 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" - loop $for-loop|0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i64.load32_s + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" - loop $for-loop|0 - local.get $2 - local.get $4 + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$5 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $3 - local.get $2 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$5 + end + block $folding-inner0 + local.get $6 + i32.eqz + if + block $__inlined_func$~lib/util/number/itoa64 (result i32) + local.get $5 + i64.load + i64.extend32_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $2 + i64.sub + local.get $2 + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + i32.const 1 + i32.shl + local.tee $0 + select + local.tee $2 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $2 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $2 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $2 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $2 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $2 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $2 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $2 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $0 + local.get $1 + i32.add + local.get $2 + local.get $3 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + end + local.set $0 + br $folding-inner0 + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $7 + i32.const 21 + i32.add + local.get $6 + i32.mul + i32.const 21 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $7 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $7 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $7 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end local.get $0 local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" - local.get $2 i32.const 1 + i32.shl i32.add - local.set $2 - br $for-loop|0 + local.get $5 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$5 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const -1 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21090,20 +21045,22 @@ local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" loop $for-loop|0 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if local.get $3 local.get $2 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + i64.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -21113,11 +21070,11 @@ local.get $0 local.get $1 i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" + call_indirect (type $8) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 br $for-loop|0 end @@ -21214,7 +21171,7 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/typedarray/Uint64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21258,7 +21215,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) loop $for-loop|0 local.get $2 local.get $4 @@ -21270,17 +21227,22 @@ i32.shl i32.add i64.load + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 0 + local.get $5 local.get $2 local.get $0 local.get $1 i32.load call_indirect (type $8) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" + drop local.get $2 i32.const 1 i32.add @@ -21288,22 +21250,17 @@ br $for-loop|0 end end - i32.const -1 - local.set $2 + i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) + (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21318,75 +21275,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store local.get $0 i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $14) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21404,69 +21314,31 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $0 i32.load offset=4 - local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $15) - br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end + call $~lib/typedarray/Int32Array#get:length global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 ) - (func $~lib/typedarray/Int8Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21504,51 +21376,52 @@ local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - i32.const 0 - i32.ge_s + local.get $4 + i32.lt_s if - local.get $2 local.get $3 + local.get $2 + i32.const 2 + i32.shl i32.add - i32.load8_s + i32.load + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength + i32.const 1 + local.get $5 local.get $2 local.get $0 local.get $1 i32.load call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" + drop local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 br $for-loop|0 end end - i32.const -1 - local.set $2 + i32.const 0 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint8Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21577,144 +21450,70 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/typedarray/Int32Array#get:length local.get $2 - ) - (func $~lib/typedarray/Int16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i32.load8_u + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Uint16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21743,62 +21542,76 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end + i32.load offset=4 + i32.const 24 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store32 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Int32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21827,146 +21640,77 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer local.get $2 - ) - (func $~lib/typedarray/Uint32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 + i32.const 4 + i32.add i32.lt_s if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 i32.load offset=4 + i32.const 16 + i32.add local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" - loop $for-loop|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) - (func $~lib/typedarray/Int64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -21992,65 +21736,268 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 11264 i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.load offset=4 - local.set $3 + call $~lib/typedarray/Int32Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub + i32.load offset=4 + i32.const 28 + i32.add local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_s + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1412 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 i32.const 0 - i32.ge_s + i32.lt_s if - local.get $3 - local.get $2 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i64.load + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 + i32.store local.get $0 local.get $1 - i32.load - call_indirect (type $8) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const -1 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22088,11 +22035,11 @@ local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int64Array#get:length + call $~lib/typedarray/Int32Array#get:length i32.const 1 i32.sub local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" loop $for-loop|0 local.get $2 i32.const 0 @@ -22100,10 +22047,10 @@ if local.get $3 local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load + i32.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -22113,8 +22060,8 @@ local.get $0 local.get $1 i32.load - call_indirect (type $8) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" local.get $2 i32.const 1 i32.sub @@ -22131,10 +22078,11 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/typedarray/Float32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22173,21 +22121,19 @@ i32.store offset=8 local.get $0 call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" loop $for-loop|0 local.get $2 - i32.const 0 - i32.ge_s + local.get $4 + i32.lt_s if local.get $3 local.get $2 i32.const 2 i32.shl i32.add - f32.load + i32.load global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -22197,11 +22143,11 @@ local.get $0 local.get $1 i32.load - call_indirect (type $14) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 br $for-loop|0 end @@ -22215,10 +22161,11 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/typedarray/Float64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22256,103 +22203,20 @@ local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $2 - block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) loop $for-loop|0 local.get $2 - i32.const 0 - i32.ge_s + local.get $4 + i32.lt_s if local.get $3 local.get $2 - i32.const 3 + i32.const 2 i32.shl i32.add - f64.load - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 i32.load - call_indirect (type $15) - br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $for-loop|0 - end - end - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_s local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 @@ -22367,7 +22231,7 @@ i32.load call_indirect (type $1) i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" drop local.get $2 i32.const 1 @@ -22383,13 +22247,9 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22404,74 +22264,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - end + i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22493,73 +22306,93 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $3 + local.get $4 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.load offset=4 + i32.const 4 + local.get $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.tee $0 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22577,69 +22410,27 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - end + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22665,25 +22456,25 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) loop $for-loop|0 local.get $2 local.get $4 @@ -22691,25 +22482,24 @@ if local.get $3 local.get $2 - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load + i32.load16_s local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - i32.const 0 + i32.const 1 local.get $5 local.get $2 local.get $0 local.get $1 i32.load call_indirect (type $1) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" + br_if $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" drop local.get $2 i32.const 1 @@ -22718,18 +22508,16 @@ br $for-loop|0 end end - i32.const 1 + i32.const 0 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22751,71 +22539,77 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $2 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $1) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.add + i32.load8_u + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22837,71 +22631,82 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $2 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.set $1 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $8) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $2 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -22923,71 +22728,60 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $8) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.shl + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -23009,71 +22803,367 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 14 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_s + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $1 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $3 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 - local.set $3 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 + call $~lib/typedarray/Int16Array#get:length + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/util/string/joinIntegerArray$1410 + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 i32.lt_s if - local.get $3 - local.get $2 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - f32.load - local.set $5 + global.set $~lib/memory/__stack_pointer + i32.const 7776 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.load16_s + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + local.get $6 + i32.mul + i32.const 11 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $4 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $5 - local.get $2 + i32.store local.get $0 local.get $1 - i32.load - call_indirect (type $14) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - i32.const 1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $2 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -23095,69 +23185,72 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" loop $for-loop|0 local.get $2 - local.get $4 - i32.lt_s + i32.const 0 + i32.ge_s if local.get $3 local.get $2 - i32.const 3 + i32.const 1 i32.shl i32.add - f64.load - local.set $5 + i32.load16_s global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 i32.const 3 global.set $~argumentsLength - i32.const 0 - local.get $5 local.get $2 local.get $0 local.get $1 i32.load - call_indirect (type $15) - i32.eqz - br_if $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" - drop + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" local.get $2 i32.const 1 - i32.add + i32.sub local.set $2 br $for-loop|0 end end - i32.const 1 + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23172,60 +23265,69 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store local.get $0 - i32.const 255 - i32.and - i32.const 7152 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23267,40 +23369,51 @@ local.get $0 i32.store offset=8 local.get $0 - call $~lib/typedarray/Int8Array#get:length + call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $4) + block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + loop $for-loop|0 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + i32.const 1 end global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -23320,59 +23433,24 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 i32.store local.get $0 - i32.const 65535 - i32.and - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount + i32.load offset=4 local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount i32.const 1 + i32.shl i32.add - global.set $std/typedarray/forEachCallCount + i32.load16_s global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23387,58 +23465,44 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1696 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1696 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store - i32.const 7152 local.get $1 - call $~lib/array/Array#__get + i32.store offset=8 local.get $0 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount + call $~lib/typedarray/Float64Array#sort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23453,126 +23517,36 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store - i32.const 7152 - local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s local.get $0 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#get:length global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store - i32.const 7152 local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s - local.get $0 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount + i32.store local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23587,65 +23561,77 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 i32.store - i32.const 7152 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 536 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - local.get $1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 537 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $12) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end i32.const 0 - i32.const 1568 - i32.const 538 - i32.const 5 - call $~lib/builtins/abort - unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i32) + (local $3 i32) + (local $4 f64) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -23674,7 +23660,7 @@ local.get $0 i32.store local.get $0 - call $~lib/typedarray/Int8Array#get:length + call $~lib/typedarray/Int64Array#get:length local.tee $5 i32.const 1 i32.gt_u @@ -23682,122 +23668,43 @@ local.get $5 i32.const 1 i32.shr_u - local.set $4 + local.set $3 local.get $5 - i32.const 8 + i32.const 1 i32.sub - local.set $6 + local.set $5 loop $while-continue|0 local.get $1 - i32.const 7 - i32.add - local.get $4 + local.get $3 i32.lt_u if - local.get $1 - local.get $2 - i32.add - local.tee $7 - i64.load - local.tee $3 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $3 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.set $3 - local.get $7 - local.get $2 - local.get $6 - i32.add - local.get $1 - i32.sub - local.tee $7 - i64.load - local.tee $8 - i64.const 8 - i64.shr_u - i64.const 71777214294589695 - i64.and - local.get $8 - i64.const 71777214294589695 - i64.and - i64.const 8 - i64.shl - i64.or - local.tee $8 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $8 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - i64.store - local.get $7 - local.get $3 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $3 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr - i64.store - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|1 - local.get $1 - local.get $4 - i32.lt_u - if - local.get $1 local.get $2 + local.get $1 + i32.const 3 + i32.shl i32.add local.tee $6 - i32.load8_u - local.set $7 + f64.load + local.set $4 local.get $6 local.get $2 local.get $5 local.get $1 i32.sub + i32.const 3 + i32.shl i32.add local.tee $6 - i32.load8_u - i32.store8 + f64.load + f64.store local.get $6 - local.get $7 - i32.store8 + local.get $4 + f64.store local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|1 + br $while-continue|0 end end end @@ -23807,14 +23714,10 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" - (local $0 i32) + (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23829,201 +23732,116 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $0 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Int8Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.extend8_s - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end + local.get $0 + call $~lib/typedarray/Int64Array#get:length global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + call $~lib/util/string/joinFloatArray global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 4 i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.set $1 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=20 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $12) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 f64) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -24049,88 +23867,66 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $12) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24145,200 +23941,107 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $1 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.get $0 i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) + loop $for-loop|0 + local.get $2 local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne + i32.lt_s if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $12) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 end + i32.const 1 end global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 + i32.load offset=4 + local.get $1 i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + f64.load global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24370,11 +24073,11 @@ local.get $0 i32.store offset=4 local.get $0 - call $~lib/typedarray/Int8Array#get:length + call $~lib/typedarray/Int32Array#get:length local.set $2 global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 6 + i32.const 13 call $~lib/rt/itcms/__new local.tee $3 i32.store offset=8 @@ -24402,6 +24105,8 @@ i32.gt_s select local.tee $0 + i32.const 2 + i32.shl i32.add i32.store offset=4 local.get $3 @@ -24434,6 +24139,8 @@ select local.get $0 i32.sub + i32.const 2 + i32.shl i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -24441,14 +24148,11 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24463,207 +24167,121 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $0 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + local.get $0 + i32.load offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int32Array#get:length global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 + i32.store local.get $1 + call $~lib/util/sort/SORT + global.get $~lib/memory/__stack_pointer i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $1 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.store offset=20 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - if + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $13) + br_if $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24692,95 +24310,51 @@ local.get $0 i32.store local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.tee $4 + call $~lib/typedarray/Int32Array#get:length + local.tee $5 i32.const 1 i32.gt_u if - local.get $4 + local.get $5 i32.const 1 i32.shr_u local.set $3 - local.get $4 - i32.const 2 + local.get $5 + i32.const 1 i32.sub local.set $5 loop $while-continue|0 local.get $1 - i32.const 1 - i32.add local.get $3 i32.lt_u if - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $6 - i32.load - i32.const 16 - i32.rotr - local.set $7 - local.get $6 local.get $2 local.get $1 - i32.const 1 + i32.const 2 i32.shl i32.add local.tee $6 - i32.load - i32.const 16 - i32.rotr - i32.store + f32.load + local.set $4 local.get $6 - local.get $7 - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|1 - local.get $1 - local.get $3 - i32.lt_u - if local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - local.set $6 local.get $5 - local.get $2 - local.get $4 local.get $1 i32.sub - i32.const 1 + i32.const 2 i32.shl i32.add - local.tee $5 - i32.load16_u - i32.store16 - local.get $5 + local.tee $6 + f32.load + f32.store local.get $6 - i32.store16 + local.get $4 + f32.store local.get $1 i32.const 1 i32.add local.set $1 - br $while-continue|1 + br $while-continue|0 end end end @@ -24790,12 +24364,10 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24813,98 +24385,30 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 + i32.load offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $3 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + call $~lib/typedarray/Int32Array#get:length global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 + i32.const 9584 + i32.store + call $~lib/util/string/joinFloatArray global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float32Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24919,200 +24423,158 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $1 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.get $0 i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int16Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Int16Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.extend16_s - i32.ne + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $2 + block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $13) + br_if $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 end + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.store offset=20 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $13) + br_if $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 f32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -25138,92 +24600,66 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + i32.load offset=4 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $3 + i32.store offset=8 local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + call $~lib/typedarray/Int32Array#get:length + local.set $4 + block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $13) + i32.eqz + br_if $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -25239,824 +24675,988 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - i32.store offset=8 + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 + i32.const 1 + i32.const 27 local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 1 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl i32.add - local.set $0 - br $for-loop|0 + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end end - global.get $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1504 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int16Array#reverse - drop + local.get $1 i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 7152 + call $~lib/rt/itcms/__visit + i32.const 7616 + call $~lib/rt/itcms/__visit + i32.const 7728 + call $~lib/rt/itcms/__visit + i32.const 10928 + call $~lib/rt/itcms/__visit + i32.const 11008 + call $~lib/rt/itcms/__visit + i32.const 11088 + call $~lib/rt/itcms/__visit + i32.const 11184 + call $~lib/rt/itcms/__visit + i32.const 11264 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 8432 + call $~lib/rt/itcms/__visit + i32.const 9488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - loop $for-loop|1 + loop $while-continue|0 local.get $0 - local.get $4 - i32.lt_s + local.get $1 + i32.ne if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 65535 + i32.load offset=4 + i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 + i32.const 1232 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 1 + i32.const 20 i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - br $for-loop|1 + br $while-continue|0 end end + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + local.get $0 local.get $1 - i32.store offset=16 + f64.add + ) + (func $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + local.get $0 local.get $1 - i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.set $1 + f32.add + ) + (func $std/typedarray/testInstantiate (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 48 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.store offset=20 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 + local.get $1 + i32.load offset=8 i32.ne if i32.const 0 i32.const 1568 - i32.const 575 + i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 i32.ne if i32.const 0 i32.const 1568 - i32.const 576 + i32.const 34 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.ne + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 i32.const 1568 - i32.const 577 + i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 local.get $0 - i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 + local.get $1 + i32.load offset=8 i32.ne if i32.const 0 i32.const 1568 - i32.const 578 + i32.const 38 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.get $0 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $4 - i32.const 1 - i32.gt_u + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - local.get $4 - i32.const 1 - i32.shr_u - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load - local.set $4 - local.get $6 - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load - i32.store - local.get $6 - local.get $4 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + i32.load offset=8 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $1 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int32Array#constructor + local.get $0 + call $~lib/typedarray/Int16Array#constructor local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - local.get $2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 + i32.store offset=4 local.get $1 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.set $1 + i32.load offset=8 + local.get $0 + i32.const 1 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 i32.ne if i32.const 0 i32.const 1568 - i32.const 575 + i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.ne + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 i32.const 1568 - i32.const 576 + i32.const 52 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 + i32.const 1 + i32.shl i32.ne if i32.const 0 i32.const 1568 - i32.const 577 + i32.const 53 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 i32.ne if i32.const 0 i32.const 1568 - i32.const 578 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 57 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - i32.store + i32.const 2 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 call $~lib/typedarray/Int32Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - local.get $3 + local.get $1 + i32.load offset=8 local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 i32.const 2 i32.shl - i32.add + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $3 local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 + call $~lib/typedarray/Int32Array#get:length + local.get $0 + i32.ne + if i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + i32.const 1568 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.tee $1 - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - select + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - i32.sub - i32.const 2 + i32.const 3 i32.shl - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 68 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store + local.get $0 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=36 global.get $~lib/memory/__stack_pointer - i32.const 7616 + local.get $1 i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - local.get $2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 3 + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 + i32.store offset=4 local.get $1 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.set $1 + call $~lib/typedarray/Int64Array#get:length + local.get $0 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=40 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 local.get $1 - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.store offset=20 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 77 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 + i32.const 2 + i32.shl i32.ne if i32.const 0 i32.const 1568 - i32.const 575 + i32.const 78 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 i32.ne if i32.const 0 i32.const 1568 - i32.const 576 + i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 + i32.const 3 + i32.shl i32.ne if i32.const 0 i32.const 1568 - i32.const 577 + i32.const 83 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 i32.ne if i32.const 0 i32.const 1568 - i32.const 578 + i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 48 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 255 + i32.and + local.tee $1 + local.get $0 + i32.const 255 + i32.and + local.tee $0 + i32.gt_u + local.get $0 + local.get $1 + i32.gt_u + i32.sub + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.eqz + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.eqz + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.eqz + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + local.get $0 + local.get $0 + i64.mul + ) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -26076,75 +25676,59 @@ i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7152 i32.store local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $5 - i32.const 1 - i32.gt_u + i32.const 255 + i32.and + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne if - local.get $5 - i32.const 1 - i32.shr_u - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load - local.set $4 - local.get $6 - local.get $2 - local.get $5 - local.get $1 - i32.sub - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load - i64.store - local.get $6 - local.get $4 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -26159,101 +25743,59 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load - local.tee $4 + i32.const 7152 i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + i64.extend_i32_s local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 + i32.ne + if i32.const 0 - local.get $1 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -26269,615 +25811,385 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Int64Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 7152 + i32.store + i32.const 7152 local.get $1 - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + call $~lib/array/Array#__get local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne + i32.ne if i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 536 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne if i32.const 0 i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 537 + i32.const 5 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne if i32.const 0 i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 538 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 + i32.const 65535 + i32.and i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - end - local.tee $1 + i32.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 + f64.const 4 + f64.eq + ) + (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.lt_s - select + f32.const 4 + f32.eq + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + i32.const 255 + i32.and + i32.const 2 + i32.gt_u ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.and + i32.eqz + ) + (func $~start + call $start:std/typedarray + ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 + i64.const 0 + i64.store local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Int64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 i32.const 1 i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne + local.tee $7 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $5 - i32.const 1 - i32.gt_u - if - local.get $5 - i32.const 1 - i32.shr_u - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - loop $while-continue|0 - local.get $1 - local.get $3 - i32.lt_u + local.get $7 + i32.eqz if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load - local.set $4 - local.get $6 - local.get $2 - local.get $5 - local.get $1 + local.get $0 + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load - f32.store - local.get $6 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64$749 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8000 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64$749 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.wrap_i64 + local.tee $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $3 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $3 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $3 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $3 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $3 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $3 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $3 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa64_dec_lut + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 20 + i32.add + local.get $7 + i32.mul + i32.const 20 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|0 local.get $4 - f32.store - local.get $1 - i32.const 1 - i32.add + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $5 + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring local.set $1 - br $while-continue|0 + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -26886,312 +26198,458 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $3 - local.get $0 - i32.load offset=4 - i32.const 4 - local.get $2 - local.get $2 - i32.const 4 - i32.gt_s - select - local.tee $0 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - end - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" - (local $0 i32) - (local $1 i32) - (local $2 f32) - (local $3 i32) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 + i64.const 0 + i64.store local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Float32Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $7 + i32.eqz + if + local.get $0 + f64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 9664 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.1 + local.get $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.1 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 9696 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.1 + i32.const 9728 + i32.const 9776 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9808 + local.get $3 + i32.const 0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 9808 + local.get $1 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner1 + end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Float32Array#__get + i32.const 9584 + i32.store global.get $~lib/memory/__stack_pointer - i32.const 7616 + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $7 + i32.mul + i32.const 28 + i32.add + local.tee $5 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $6 i32.store offset=4 - i32.const 7616 - local.get $4 + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $6 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $5 + local.get $6 + local.get $2 i32.const 1 - i32.sub + i32.shl + i32.add local.get $0 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 end - local.get $0 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer + local.get $6 + return end - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Float32Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + ) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $8 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7776 + return + end + local.get $8 + i32.eqz + if + local.get $0 + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 9664 + local.set $0 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $5 + f64.promote_f32 + local.tee $3 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if + i32.const 9696 + local.set $0 + local.get $3 + local.get $3 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 9728 + i32.const 9776 + local.get $3 + f64.const 0 + f64.lt + select + local.set $0 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + i32.const 9808 + local.get $3 + i32.const 1 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $1 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 9808 + local.get $1 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 9584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9580 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 28 + i32.add + local.get $8 + i32.mul + i32.const 28 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $8 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $1 + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 9584 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $6 + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + f32.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -27210,78 +26668,423 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $5 - i32.const 1 - i32.gt_u - if - local.get $5 + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + i32.load8_u offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store8 + local.get $0 + i32.load8_u offset=2 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store8 offset=1 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + i32.load8_u offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store8 offset=1 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 i32.const 1 - i32.shr_u - local.set $3 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 i32.const 1 i32.sub - local.set $5 - loop $while-continue|0 + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 local.get $1 - local.get $3 - i32.lt_u + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $1 - i32.const 3 - i32.shl + i32.store + local.get $0 + local.get $4 + i32.const 1 i32.add local.tee $6 - f64.load - local.set $4 - local.get $6 + local.get $9 local.get $2 - local.get $5 - local.get $1 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 i32.sub - i32.const 3 - i32.shl + i32.const 1 i32.add - local.tee $6 - f64.load - f64.store + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add local.get $4 - f64.store + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if local.get $1 - i32.const 1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub local.set $1 - br $while-continue|0 + br $for-loop|4 end end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" - (local $0 i32) - (local $1 i32) - (local $2 f64) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i64) + (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -27297,960 +27100,1290 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7616 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - local.get $4 - i32.lt_s + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 - local.get $3 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=16 local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - call $~lib/typedarray/Float64Array#reverse - drop - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $4 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - local.get $0 - call $~lib/typedarray/Float64Array#__get - global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=4 - i32.const 7616 - local.get $4 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + i64.load offset=16 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $16 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store offset=8 + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + i64.store offset=16 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + local.get $9 + local.get $16 + local.get $1 + select + i64.store offset=8 + br $folding-inner0 end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $0 + i32.const 0 + local.get $1 i32.const 1 - i32.add - local.set $0 - br $for-loop|1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 end - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - call $~lib/typedarray/Float64Array#reverse - local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.tee $3 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 local.get $3 - i32.lt_s + local.get $4 + i32.lt_u if - local.get $2 - local.get $0 - local.get $2 + local.get $11 + local.get $3 + i32.const 2 + i32.shl i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" - drop - local.get $2 + i32.const -1 + i32.store + local.get $3 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $3 + br $for-loop|1 end end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 + i32.const 0 + local.get $1 i32.const 1 i32.sub + local.tee $10 local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + if + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store + local.get $0 i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store local.get $0 - local.get $2 + local.get $4 + i32.const 1 i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0" - drop + local.tee $6 + local.get $10 local.get $2 - i32.const 1 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 - local.get $0 - i32.const 7728 - local.get $0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $11 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 i32.const 4 - i32.const 9 - call $~lib/typedarray/Int8Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load16_u + local.set $1 + local.get $0 + i32.load16_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store16 + local.get $0 + i32.load16_u offset=4 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store16 offset=2 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_u + local.set $1 + local.get $0 + i32.load16_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store16 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store16 offset=2 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -28266,525 +28399,1726 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 + block $folding-inner0 local.get $1 - i32.lt_s + i32.const 48 + i32.le_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 - local.get $0 - i32.const 7728 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load8_s + local.set $1 + local.get $0 + i32.load8_s offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store8 + local.get $0 + i32.load8_s offset=2 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store8 offset=1 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_s + local.set $1 + local.get $0 + i32.load8_s offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store8 offset=1 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i64) + (local $17 i64) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + i64.load offset=16 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $16 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store offset=8 + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + i64.store offset=16 + end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $16 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $9 + local.get $9 + local.get $16 + local.get $2 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + local.tee $1 + select + i64.store + local.get $0 + local.get $9 + local.get $16 + local.get $1 + select + i64.store offset=8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $11 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if + i32.const 0 + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store + local.get $0 + i32.load offset=8 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store offset=4 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint8Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load16_s + local.set $1 + local.get $0 + i32.load16_s offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $4 + select + i32.store16 + local.get $0 + i32.load16_s offset=4 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $1 + local.get $3 + local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $3 + select + i32.store16 offset=2 + local.get $0 + local.get $1 + local.get $5 + local.get $3 + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_s + local.set $1 + local.get $0 + i32.load16_s offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + local.get $2 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + local.tee $2 + select + i32.store16 + local.get $0 + local.get $1 + local.get $3 + local.get $2 + select + i32.store16 offset=2 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.add + local.set $11 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $10 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if + local.get $1 + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + i32.const 31 + local.get $9 + local.get $9 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $9 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $9 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $13 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $14 + local.get $10 + i32.add + local.tee $15 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $11 + local.get $14 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $15 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $10 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $11 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $10 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $11 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $9 + local.get $12 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $12 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f64) + (local $18 f64) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -28800,1999 +30134,2326 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 + block $folding-inner0 local.get $1 - i32.lt_s + i32.const 48 + i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f64.load + local.set $9 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + f64.load offset=16 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store offset=8 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $9 + local.get $0 + f64.load offset=8 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + local.tee $1 + select + f64.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f64.store offset=8 + br $folding-inner0 + end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=4 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 + local.get $3 + local.get $4 + i32.lt_u + if + local.get $11 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 local.get $2 + i32.store local.get $0 - i32.const 7728 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 + i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + local.set $1 i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $15 + local.get $11 + i32.add + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 + i32.shl + local.tee $1 + local.get $11 + i32.add + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + (local $16 i32) + (local $17 f32) + (local $18 f32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne + i32.const 16320 + i32.lt_s if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s + i32.store + block $folding-inner0 + local.get $1 + i32.const 48 + i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + f32.load offset=8 + local.set $18 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $18 + local.get $9 + local.get $17 + local.get $1 + select + local.tee $9 + local.get $9 + local.get $18 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store offset=4 + local.get $0 + local.get $9 + local.get $18 + local.get $1 + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $9 + local.get $0 + f32.load offset=4 + local.set $17 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $17 + local.get $9 + local.get $9 + local.get $17 + local.get $2 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + local.tee $1 + select + f32.store + local.get $0 + local.get $9 + local.get $17 + local.get $1 + select + f32.store offset=4 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 - i32.add - local.tee $2 + i32.store + local.get $0 i32.const 0 - local.get $2 + local.get $1 + i32.const 1 + i32.sub i32.const 0 - i32.gt_s - select - local.set $2 + local.get $2 + call $~lib/util/sort/insertionSort + br $folding-inner0 end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $5 + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $11 + i32.add + local.set $12 + loop $for-loop|1 local.get $3 - i32.lt_s + local.get $4 + i32.lt_u if - local.get $2 - local.get $0 - local.get $2 - i32.const 1 + local.get $11 + local.get $3 + i32.const 2 i32.shl i32.add - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" - drop - local.get $2 + i32.const -1 + i32.store + local.get $3 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $3 + br $for-loop|1 end end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 + i32.const 0 + local.get $1 i32.const 1 i32.sub + local.tee $10 local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 + call $~lib/util/sort/extendRunRight + local.tee $4 + i32.const 1 + i32.add + local.tee $1 + i32.const 32 i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + if + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store + local.get $0 i32.const 0 + i32.const 31 + local.get $10 + local.get $10 + i32.const 31 i32.ge_s + select + local.tee $4 + local.get $1 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $1 + i32.const 0 + local.set $3 + loop $while-continue|2 + local.get $4 + local.get $10 + i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $6 + local.get $10 local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 + i32.add + local.tee $5 + local.get $5 + local.get $10 + i32.gt_s + select + local.tee $5 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $14 + i64.div_u + local.get $5 + local.get $6 + i32.add i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $14 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $1 + local.get $7 + i32.gt_u + if + local.get $1 + i32.const 2 + i32.shl + local.tee $15 + local.get $11 + i32.add + local.tee $16 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $12 + local.get $15 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $8 + local.get $3 + local.get $4 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $16 + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|3 + end + end + local.get $7 + i32.const 2 i32.shl + local.tee $1 + local.get $11 i32.add - i32.load16_u + local.get $3 + i32.store + local.get $1 + local.get $12 + i32.add + local.get $4 + i32.store + local.get $6 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $1 + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $11 + i32.add + i32.load + local.tee $4 + i32.const -1 + i32.ne + if + local.get $3 + local.get $12 + i32.add + i32.load + i32.const 1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $10 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end local.get $1 - i32.const 65535 - i32.and - i32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0" - drop - local.get $2 i32.const 1 i32.sub - local.set $2 - br $while-continue|0 + local.set $1 + br $for-loop|4 end end - i32.const -1 + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.gt_u + local.get $0 + local.get $1 + i64.lt_u i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.store + local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + local.tee $0 + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.extend8_s + local.get $1 + i32.extend8_s + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.gt_s local.get $0 local.get $1 + i64.lt_s + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.extend16_s + local.get $1 + i32.extend16_s + i32.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u local.get $2 - call $~lib/typedarray/Int16Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i64.xor + local.tee $2 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + local.get $3 + i64.xor + local.tee $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" - (local $0 i32) - (local $1 i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $2 + i32.xor + local.tee $2 + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + local.get $3 + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 i32.lt_s + i32.sub + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz if - i32.const 49120 - i32.const 49168 - i32.const 1 + local.get $0 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end local.get $0 - local.get $1 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) local.get $0 - i32.const 7728 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add local.get $0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + memory.copy local.get $0 + i32.const 46 + i32.store16 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|0 + else + local.get $3 + i32.const 0 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $3 + i32.add + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_dec_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + memory.copy + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + i32.const 4 + i32.add + local.tee $4 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $0 + local.get $0 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 100 + i32.lt_u + if (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $0 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + end + end + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 + local.get $0 + local.get $1 + i32.add + local.set $1 + end + local.get $1 + i32.const 2 + i32.add + end end end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + ) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) local.get $2 - i32.const 3 + local.get $1 + i64.sub + local.set $9 + i64.const 1 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $3 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $12 + i64.const 1 + i64.sub + local.tee $11 local.get $2 - i32.store offset=4 + i64.and + local.set $8 local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if + local.set $7 + loop $while-continue|0 + local.get $7 i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $3 + i32.const 1000000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100000 + i32.div_u + local.set $6 + local.get $3 + i32.const 100000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10000 + i32.div_u + local.set $6 + local.get $3 + i32.const 10000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 1000 + i32.div_u + local.set $6 + local.get $3 + i32.const 1000 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 100 + i32.div_u + local.set $6 + local.get $3 + i32.const 100 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + i32.const 10 + i32.div_u + local.set $6 + local.get $3 + i32.const 10 + i32.rem_u + local.set $3 + br $break|1 + end + local.get $3 + local.set $6 + i32.const 0 + local.set $3 + br $break|1 + end + i32.const 0 + local.set $6 + end + local.get $5 + local.get $6 + i32.or + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $4 + local.get $3 + i64.extend_i32_u + local.get $10 + i64.extend_i32_s + local.tee $2 + i64.shl + local.get $8 + i64.add + local.tee $1 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 10736 + i32.add + i64.load32_u + local.get $2 + i64.shl + local.set $2 + local.get $0 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $1 + local.get $9 + i64.lt_u + local.get $4 + local.get $1 + i64.sub + local.get $2 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $1 + local.get $2 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $1 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $2 + i64.add + local.set $1 + br $while-continue|3 + end + end + local.get $0 + local.get $7 + i32.store16 + local.get $5 + return + end + br $while-continue|0 + end end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $while-continue|4 + local.get $4 + i64.const 10 + i64.mul + local.set $4 + local.get $8 + i64.const 10 + i64.mul + local.tee $1 + local.get $10 + i64.extend_i32_s + i64.shr_u + local.tee $2 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $1 + local.get $11 + i64.and + local.tee $8 + local.get $4 + i64.ge_u + br_if $while-continue|4 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 + local.get $7 + i32.sub i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf + i32.shl + i32.const 10736 + i32.add + i64.load32_u + i64.mul + local.set $1 + local.get $0 + local.get $5 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 + i32.sub i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Int16Array#subarray + i32.shl + i32.add local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.load16_u + local.set $7 + loop $while-continue|6 + local.get $1 + local.get $8 + i64.gt_u + local.get $4 + local.get $8 + i64.sub + local.get $12 + i64.ge_u + i32.and + if (result i32) + local.get $1 + local.get $8 + local.get $12 + i64.add + local.tee $2 + i64.gt_u + local.get $1 + local.get $8 + i64.sub + local.get $2 + local.get $1 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $12 + i64.add + local.set $8 + br $while-continue|6 + end end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $7 + i32.store16 + local.get $5 ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 f32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store offset=4 + local.get $5 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $7 i32.store offset=12 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $10 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $9 + i32.add + i32.const 255 + local.get $10 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.sub + i32.const 31 + i32.shr_s + local.get $4 + i32.or + local.get $4 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint16Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 i32.const 0 - local.get $2 + i32.const 64 + i32.const 11728 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 3 + i32.add i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + i32.const 0 + local.set $1 + loop $for-loop|00 local.get $1 - i32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $8 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $2 + local.get $2 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $2 + f32.const 255 + f32.min + f32.const 0 + f32.max + i32.trunc_sat_f32_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 64 + i32.const 11824 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11856 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|01 local.get $1 - i32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $5 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + f64.const 255 + f64.min + f64.const 0 + f64.max + i32.trunc_sat_f64_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11888 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $4 + i32.const 7 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $6 + i32.const 0 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $5 + i32.add + i32.const 255 + local.get $1 + local.get $6 + i32.add + i32.load8_s + local.tee $7 + i32.sub + i32.const 31 + i32.shr_s + local.get $7 + i32.or + local.get $7 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11920 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -30800,756 +32461,877 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 - local.get $2 - local.get $0 - i32.const 7728 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $7 + i32.store offset=4 + local.get $7 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11520 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $6 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11600 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11632 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $1 + local.get $7 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11664 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 64 + i32.const 11696 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int32Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 13872 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $7 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 local.get $1 - i32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $7 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + i64.trunc_sat_f32_u + i64.const 0 + local.get $4 + local.get $4 + f32.sub + f32.const 0 + f32.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14032 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14144 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + local.tee $9 + i32.add + f64.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i64.trunc_sat_f64_u + i64.const 0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14256 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 69 + i32.const 14368 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -31557,755 +33339,884 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 12896 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 3 i32.add - local.set $0 - br $for-loop|0 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $10 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $10 + local.get $1 + i32.const 2 + i32.shl + local.tee $7 + i32.add + f32.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13008 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $0 + local.get $8 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13072 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13136 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 67 + i32.const 13200 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 11 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const -1 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 3 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint32Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12240 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 local.get $1 - i64.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_u + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12336 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12384 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 local.get $1 - i64.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_u + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12432 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 66 + i32.const 12480 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -32313,756 +34224,877 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 i32.store offset=4 + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11312 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $8 + i32.const 3 i32.add - local.set $0 - br $for-loop|0 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 + local.get $1 + local.get $8 + i32.lt_s + if + local.get $1 + local.get $6 + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11392 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11424 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $1 + local.get $7 + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11456 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 16 + i32.const 11488 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 11 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const -1 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Int64Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $2 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $1 - i64.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13264 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $7 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 local.get $1 - i64.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + local.get $7 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + i64.trunc_sat_f32_s + i64.const 0 + local.get $4 + local.get $4 + f32.sub + f32.const 0 + f32.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13424 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13536 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 3 + i32.shl + local.tee $9 + i32.add + f64.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i64.trunc_sat_f64_s + i64.const 0 + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + select + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13648 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13760 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -33070,670 +35102,884 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12528 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 3 i32.add - local.set $0 - br $for-loop|0 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $10 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $10 + local.get $1 + i32.const 2 + i32.shl + local.tee $7 + i32.add + f32.load + local.set $3 + local.get $7 + local.get $9 + i32.add + local.get $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12640 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $0 + local.get $8 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12704 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12768 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 17 + i32.const 12832 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 11 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const -1 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - i64.const 3 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Uint64Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $2 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 11952 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $0 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $8 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $9 + loop $for-loop|0 local.get $1 - f32.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $9 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + i32.trunc_sat_f32_s + i32.const 0 + local.get $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12048 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=20 + local.get $0 + local.get $7 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12096 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11184 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.get $6 + i32.const 2 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11184 + i32.store offset=8 + i32.const 11188 + i32.load + local.set $8 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $4 + i32.trunc_sat_f64_s + i32.const 0 + local.get $4 + local.get $4 + f64.sub + f64.const 0 + f64.eq + select + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12144 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $0 + local.get $5 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12192 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -33741,842 +35987,699 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $1 - f32.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (result i32) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (local $0 i32) + (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $7 + loop $for-loop|0 + local.get $1 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 14784 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11088 + call $~lib/array/Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.const 3 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=8 + i32.const 11092 + i32.load + local.set $7 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 14944 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int64Array#get:length + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + i32.store offset=8 local.get $0 - i32.const 1 + call $~lib/typedarray/Int64Array#get:length + local.get $5 + i32.const 6 i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 0 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const -1 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 1 - i32.const 10 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 1 - i32.const -100 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f32.const 11 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f32.const -1 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 1 - i32.const 100 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 1 - i32.const -10 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f32.const 1 - i32.const -11 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9 - call $~lib/typedarray/Float32Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 4 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 5 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 9 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 10 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 5 - i32.const 1 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f32.const 5 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - local.get $2 - local.get $3 - i32.ge_s - i32.or - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 48 i32.add - local.tee $2 - i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + i32.store offset=8 local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $1 + loop $for-loop|01 local.get $1 - f64.eq - br_if $"~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 3 + i32.shl + local.tee $7 + i32.add + local.get $2 + local.get $7 + i32.add + i64.load + f64.convert_i64_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + end end - end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const -1 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.tee $3 - i32.eqz - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" - drop - local.get $2 - local.get $3 - i32.add - local.get $3 - i32.const 1 - i32.sub - local.get $2 - local.get $2 - local.get $3 - i32.ge_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 15056 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length local.get $2 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + local.set $3 i32.const 0 - i32.ge_s - if + local.set $1 + loop $for-loop|02 + local.get $1 local.get $2 - local.get $0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + f64.convert_i32_u + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 4 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 32 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|03 + local.get $1 local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|03 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.get $2 + i32.const 7 + i32.add + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 56 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|04 local.get $1 - f64.eq - br_if $"~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0" - drop local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_s + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|04 + end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 63 + i32.const 15168 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const -1 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if i32.const 49120 i32.const 49168 i32.const 1 @@ -34584,2388 +36687,257 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#lastIndexOf - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 + call $~lib/builtins/abort + unreachable ) - (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=12 local.get $2 - local.get $0 - i32.const 7728 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 + i32.store offset=4 + local.get $2 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 0 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 603 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 604 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const -1 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 605 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 606 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 609 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const 10 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 610 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const -100 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 611 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f64.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1568 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f64.const 11 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f64.const -1 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - i32.const 1 - global.set $~argumentsLength - local.get $2 - f64.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 618 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 619 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const 100 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 620 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const -10 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 621 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - f64.const 1 - i32.const -11 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 622 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Float64Array#subarray - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 626 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 4 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - if - i32.const 0 - i32.const 1568 - i32.const 627 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 5 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 628 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 9 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 629 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 10 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 5 - i32.const 1 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 632 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - f64.const 5 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 633 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.le_s - select - i32.const 1 - i32.shl - local.set $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.ge_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - i32.sub - local.tee $2 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return - end - local.get $3 - i32.eqz - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.eq - i32.and - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - local.get $0 - local.get $3 - i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1408 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_s - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $4 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$714 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$714 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1409 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - local.get $6 - i32.mul - i32.const 10 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $4 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Uint8Array#join - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1410 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load16_s - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $4 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1411 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load16_u - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - local.get $6 - i32.mul - i32.const 10 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $4 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Int32Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1412 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 11 - i32.add - local.get $6 - i32.mul - i32.const 11 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $4 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint32Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1413 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.load - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 10 - i32.add - local.get $6 - i32.mul - i32.const 10 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $4 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $4 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$5 - local.get $0 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$5 - end - block $folding-inner0 - local.get $6 - i32.eqz - if - block $__inlined_func$~lib/util/number/itoa64 (result i32) - local.get $5 - i64.load - i64.extend32_s - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $2 - i64.sub - local.get $2 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - i32.const 1 - i32.shl - local.tee $0 - select - local.tee $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $3 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $4 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $0 - local.get $1 - i32.add - local.get $3 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $2 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $2 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $2 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $3 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $0 - local.get $1 - i32.add - local.get $2 - local.get $3 - call $~lib/util/number/utoa64_dec_lut - end - local.get $0 - if - local.get $1 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - end - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 21 - i32.add - local.get $6 - i32.mul - i32.const 21 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $7 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $7 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $7 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11008 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=8 + i32.const 11012 + i32.load + local.set $8 + loop $for-loop|0 local.get $1 - i32.add - local.tee $1 local.get $4 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $7 local.get $1 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + i32.const 2 + i32.shl + local.tee $5 + i32.add + local.get $5 + local.get $8 + i32.add + i32.load + f32.convert_i32_s + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$5 end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14480 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=20 + local.get $0 + i32.const 11088 + i32.const 3 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14592 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16320 i32.lt_s @@ -36973,350 +36945,101 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $7 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return - end - local.get $7 - i32.eqz - if - local.get $0 - i64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64$749 - local.get $3 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - local.set $1 - br $__inlined_func$~lib/util/number/utoa64$749 - end - local.get $3 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.wrap_i64 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $3 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $3 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $3 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $3 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $3 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $3 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $3 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $3 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $0 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $3 - local.get $0 - call $~lib/util/number/utoa64_dec_lut - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - br $folding-inner1 - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 9584 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 20 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 + i32.const 6 i32.add - local.get $7 - i32.mul - i32.const 20 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 24 i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $1 + loop $for-loop|00 + local.get $1 local.get $4 - local.get $7 i32.lt_s if - local.get $6 - local.get $2 - i32.const 1 + local.get $5 + local.get $1 + i32.const 2 i32.shl i32.add - local.get $0 - local.get $4 + local.get $6 + local.get $1 i32.const 3 i32.shl i32.add i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 + f32.convert_i64_s + f32.store local.get $1 - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 i32.const 1 i32.add - local.set $4 - br $for-loop|0 + local.set $1 + br $for-loop|00 end end - local.get $5 - local.get $6 - local.get $2 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14656 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $1 - br $folding-inner1 - end + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 12 + i32.sub global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - call $~lib/util/string/joinIntegerArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 16320 i32.lt_s @@ -37324,256 +37047,167 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $8 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $4 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return - end - local.get $8 - i32.eqz - if - local.get $0 - f32.load - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $1 + loop $for-loop|01 + local.get $1 + local.get $4 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 9664 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.0 + if local.get $5 - f64.promote_f32 - local.tee $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 9696 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 9728 - i32.const 9776 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.0 - end - i32.const 9808 - local.get $3 - i32.const 1 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer local.get $1 i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 9808 + i32.shl + i32.add local.get $1 - memory.copy + local.get $2 + i32.add + i32.load8_u + f32.convert_i32_u + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 end global.get $~lib/memory/__stack_pointer - i32.const 9584 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 4 i32.add - local.get $8 - i32.mul - i32.const 28 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + i32.const 16 i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $2 i32.lt_s if - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 local.get $4 + local.get $1 i32.const 2 i32.shl i32.add - f32.load - call $~lib/util/number/dtoa_buffered - local.get $2 + local.get $3 + local.get $1 + i32.const 1 + i32.shl i32.add - local.set $2 + i32.load16_s + f32.convert_i32_s + f32.store local.get $1 - if - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 i32.const 1 i32.add - local.set $4 - br $for-loop|0 + local.set $1 + br $for-loop|02 end end - local.get $6 - local.get $7 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store - local.get $7 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner1 - end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - call $~lib/util/string/joinFloatArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16320 i32.lt_s @@ -37581,187 +37215,93 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $1 - i32.const 1 - i32.sub - local.tee $7 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7776 - return - end - local.get $7 - i32.eqz - if - local.get $0 - f64.load - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 9664 - local.set $0 - block $~lib/util/number/dtoa_impl|inlined.1 - local.get $3 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.1 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.ne - if - i32.const 9696 - local.set $0 - local.get $3 - local.get $3 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.1 - i32.const 9728 - i32.const 9776 - local.get $3 - f64.const 0 - f64.lt - select - local.set $0 - br $~lib/util/number/dtoa_impl|inlined.1 - end - i32.const 9808 - local.get $3 - i32.const 0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 9808 - local.get $1 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner1 - end + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 9584 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 9580 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 28 + i32.const 11264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11264 + call $~lib/array/Array#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $2 + i32.const 7 i32.add - local.get $7 - i32.mul + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 i32.const 28 i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|0 - local.get $4 - local.get $7 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store offset=8 + i32.const 11268 + i32.load + local.set $4 + i32.const 0 + local.set $1 + loop $for-loop|03 + local.get $1 + local.get $2 i32.lt_s if - local.get $6 - local.get $2 - i32.const 1 + local.get $3 + local.get $1 + i32.const 2 i32.shl i32.add - local.get $0 + local.get $1 local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 i32.add - local.set $2 + i32.load8_s + f32.convert_i32_s + f32.store local.get $1 - if - local.get $6 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 9584 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $2 - i32.add - local.set $2 - end - local.get $4 i32.const 1 i32.add - local.set $4 - br $for-loop|0 + local.set $1 + br $for-loop|03 end end - local.get $5 - local.get $6 - local.get $2 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store - local.get $6 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner1 - end + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 62 + i32.const 14720 + call $~lib/rt/__newArray + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 return end i32.const 49120 @@ -37771,292 +37311,14 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) - (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - i32.const 9584 - i32.store - call $~lib/util/string/joinFloatArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $3 - local.get $1 - i32.lt_u - if - i32.const 1360 - i32.const 1632 - i32.const 1860 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - i32.const -1 - i32.eq - if (result i32) - local.get $3 - local.get $1 - i32.sub - else - i32.const 1056 - i32.const 1632 - i32.const 1869 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.set $2 - else - local.get $1 - local.get $2 - i32.add - local.get $3 - i32.gt_s - if - i32.const 1056 - i32.const 1632 - i32.const 1874 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=8 - local.get $3 - local.get $0 - i32.store - local.get $3 - local.get $0 - call $~lib/rt/itcms/__link - local.get $3 - local.get $2 - i32.store offset=8 - local.get $3 - local.get $0 - local.get $1 - i32.add - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 1360 + i32.const 1632 + i32.const 1902 + i32.const 5 call $~lib/builtins/abort unreachable ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - local.get $3 - local.get $0 - local.get $1 - i32.add - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" (local $0 i32) (local $1 i32) (local $2 i32) @@ -38087,7 +37349,7 @@ local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 i32.store offset=8 loop $for-loop|0 @@ -38106,8 +37368,9 @@ i32.const 10928 local.get $0 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 i32.const 1 i32.add @@ -38195,7 +37458,7 @@ local.set $4 global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 4 + i32.const 6 call $~lib/rt/itcms/__new local.tee $5 i32.store offset=8 @@ -38233,14 +37496,14 @@ i32.store offset=4 local.get $2 local.get $0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get local.set $3 global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 local.get $5 local.get $0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get local.get $3 i32.ne if @@ -38271,13 +37534,14 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -38299,31 +37563,30 @@ i32.store offset=4 i32.const 10928 call $~lib/array/Array#get:length - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 + local.get $2 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 i32.store offset=8 loop $for-loop|0 local.get $0 - local.get $1 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 10928 i32.store offset=12 - local.get $2 + local.get $1 local.get $0 i32.const 10928 local.get $0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set local.get $0 i32.const 1 i32.add @@ -38332,33 +37595,33 @@ end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 - local.get $2 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=12 local.get $0 - local.get $4 local.get $5 - local.get $2 + local.get $6 + local.get $1 i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice @@ -38408,23 +37671,33 @@ i32.const 20 i32.sub i32.load offset=16 - local.set $4 + local.tee $5 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1865 + i32.const 9 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 6 + i32.const 12 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store - local.get $5 + local.get $6 local.get $0 call $~lib/rt/itcms/__link + local.get $6 local.get $5 - local.get $4 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -38435,30 +37708,30 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=20 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $1 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint64Array#__get local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Uint64Array#__get local.get $3 - i32.ne + i64.ne if i32.const 0 i32.const 1568 @@ -38487,7 +37760,7 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" (local $0 i32) (local $1 i32) (local $2 i32) @@ -38518,7 +37791,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Int16Array#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $1 i32.store offset=8 loop $for-loop|0 @@ -38537,8 +37810,7 @@ i32.const 10928 local.get $0 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $0 i32.const 1 i32.add @@ -38624,7 +37896,7 @@ i32.sub i32.load offset=16 local.tee $4 - i32.const 1 + i32.const 3 i32.and if i32.const 1056 @@ -38636,7 +37908,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 7 + i32.const 10 call $~lib/rt/itcms/__new local.tee $5 i32.store offset=8 @@ -38674,14 +37946,14 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint32Array#__get local.set $3 global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 local.get $5 local.get $0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint32Array#__get local.get $3 i32.ne if @@ -38938,7 +38210,7 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8>" (local $0 i32) (local $1 i32) (local $2 i32) @@ -38966,29 +38238,30 @@ i32.store offset=4 i32.const 10928 call $~lib/array/Array#get:length - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 i32.store offset=8 loop $for-loop|0 local.get $0 - local.get $2 + local.get $1 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 10928 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 i32.const 10928 local.get $0 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + i32.extend8_s + call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 i32.add @@ -38997,33 +38270,33 @@ end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.load local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=12 - local.get $1 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=12 local.get $0 local.get $4 local.get $5 - local.get $1 + local.get $2 i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice @@ -39073,20 +38346,10 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $4 - i32.const 3 - i32.and - if - i32.const 1056 - i32.const 1632 - i32.const 1865 - i32.const 9 - call $~lib/builtins/abort - unreachable - end + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 9 + i32.const 4 call $~lib/rt/itcms/__new local.tee $5 i32.store offset=8 @@ -39116,22 +38379,22 @@ local.set $0 loop $for-loop|1 local.get $0 - local.get $2 + local.get $1 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Int8Array#__get local.set $3 global.get $~lib/memory/__stack_pointer local.get $5 i32.store offset=4 local.get $5 local.get $0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Int8Array#__get local.get $3 i32.ne if @@ -39162,13 +38425,14 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -39193,7 +38457,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Int64Array#constructor local.tee $1 i32.store offset=8 loop $for-loop|0 @@ -39212,7 +38476,8 @@ i32.const 10928 local.get $0 call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set local.get $0 i32.const 1 i32.add @@ -39234,19 +38499,19 @@ global.get $~lib/memory/__stack_pointer local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 local.get $0 - local.get $4 local.get $5 + local.get $6 local.get $1 i32.load offset=8 i32.add @@ -39297,8 +38562,8 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $4 - i32.const 3 + local.tee $5 + i32.const 7 i32.and if i32.const 1056 @@ -39310,20 +38575,20 @@ end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store - local.get $5 + local.get $6 local.get $0 call $~lib/rt/itcms/__link + local.get $6 local.get $5 - local.get $4 i32.store offset=8 - local.get $5 + local.get $6 local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -39334,7 +38599,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=20 i32.const 0 local.set $0 @@ -39348,16 +38613,16 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Int64Array#__get local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=4 - local.get $5 + local.get $6 local.get $0 - call $~lib/typedarray/Uint32Array#__get + call $~lib/typedarray/Int64Array#__get local.get $3 - i32.ne + i64.ne if i32.const 0 i32.const 1568 @@ -39386,14 +38651,13 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -39418,7 +38682,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $1 i32.store offset=8 loop $for-loop|0 @@ -39437,8 +38701,7 @@ i32.const 10928 local.get $0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Int32Array#__set local.get $0 i32.const 1 i32.add @@ -39460,19 +38723,19 @@ global.get $~lib/memory/__stack_pointer local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 local.get $0 + local.get $4 local.get $5 - local.get $6 local.get $1 i32.load offset=8 i32.add @@ -39523,8 +38786,8 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $5 - i32.const 7 + local.tee $4 + i32.const 3 i32.and if i32.const 1056 @@ -39536,20 +38799,20 @@ end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 11 + i32.const 9 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=8 - local.get $6 + local.get $5 local.get $0 i32.store - local.get $6 + local.get $5 local.get $0 call $~lib/rt/itcms/__link - local.get $6 local.get $5 + local.get $4 i32.store offset=8 - local.get $6 + local.get $5 local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -39560,7 +38823,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=20 i32.const 0 local.set $0 @@ -39574,16 +38837,16 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Int32Array#__get local.set $3 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 local.get $0 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Int32Array#__get local.get $3 - i64.ne + i32.ne if i32.const 0 i32.const 1568 @@ -39612,14 +38875,13 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub @@ -39644,7 +38906,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Int16Array#constructor local.tee $1 i32.store offset=8 loop $for-loop|0 @@ -39663,8 +38925,8 @@ i32.const 10928 local.get $0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 i32.add @@ -39686,19 +38948,19 @@ global.get $~lib/memory/__stack_pointer local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 local.get $0 + local.get $4 local.get $5 - local.get $6 local.get $1 i32.load offset=8 i32.add @@ -39749,8 +39011,8 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $5 - i32.const 7 + local.tee $4 + i32.const 1 i32.and if i32.const 1056 @@ -39762,20 +39024,20 @@ end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 12 + i32.const 7 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=8 - local.get $6 + local.get $5 local.get $0 i32.store - local.get $6 + local.get $5 local.get $0 call $~lib/rt/itcms/__link - local.get $6 local.get $5 + local.get $4 i32.store offset=8 - local.get $6 + local.get $5 local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -39786,7 +39048,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=20 i32.const 0 local.set $0 @@ -39800,16 +39062,16 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/typedarray/Uint64Array#__get + call $~lib/typedarray/Int16Array#__get local.set $3 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=4 - local.get $6 + local.get $5 local.get $0 - call $~lib/typedarray/Uint64Array#__get + call $~lib/typedarray/Int16Array#__get local.get $3 - i64.ne + i32.ne if i32.const 0 i32.const 1568 @@ -39838,11 +39100,11 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) @@ -39870,7 +39132,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Float32Array#constructor + call $~lib/typedarray/Float64Array#constructor local.tee $1 i32.store offset=8 loop $for-loop|0 @@ -39889,8 +39151,8 @@ i32.const 10928 local.get $0 call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set local.get $0 i32.const 1 i32.add @@ -39976,7 +39238,7 @@ i32.sub i32.load offset=16 local.tee $5 - i32.const 3 + i32.const 7 i32.and if i32.const 1056 @@ -39988,7 +39250,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 13 + i32.const 14 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=8 @@ -40026,16 +39288,16 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/typedarray/Float32Array#__get + call $~lib/typedarray/Float64Array#__get local.set $3 global.get $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 local.get $6 local.get $0 - call $~lib/typedarray/Float32Array#__get + call $~lib/typedarray/Float64Array#__get local.get $3 - f32.ne + f64.ne if i32.const 0 i32.const 1568 @@ -40064,11 +39326,11 @@ call $~lib/builtins/abort unreachable ) - (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64>" + (func $"std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f64) + (local $3 f32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -40096,7 +39358,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/typedarray/Float64Array#constructor + call $~lib/typedarray/Float32Array#constructor local.tee $1 i32.store offset=8 loop $for-loop|0 @@ -40115,8 +39377,8 @@ i32.const 10928 local.get $0 call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set local.get $0 i32.const 1 i32.add @@ -40202,7 +39464,7 @@ i32.sub i32.load offset=16 local.tee $5 - i32.const 7 + i32.const 3 i32.and if i32.const 1056 @@ -40214,7 +39476,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 14 + i32.const 13 call $~lib/rt/itcms/__new local.tee $6 i32.store offset=8 @@ -40252,16 +39514,16 @@ i32.store offset=4 local.get $1 local.get $0 - call $~lib/typedarray/Float64Array#__get + call $~lib/typedarray/Float32Array#__get local.set $3 global.get $~lib/memory/__stack_pointer local.get $6 i32.store offset=4 local.get $6 local.get $0 - call $~lib/typedarray/Float64Array#__get + call $~lib/typedarray/Float32Array#__get local.get $3 - f64.ne + f32.ne if i32.const 0 i32.const 1568 @@ -40288,503 +39550,127 @@ i32.const 1 i32.const 1 call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $1 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $2 - i32.add - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_s - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.ne - if - i32.const 11344 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + unreachable + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i64) (result i32) local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=8 + i64.lt_u + local.get $0 local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer + i64.gt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.store offset=8 + local.get $1 + i32.lt_u local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - i32.const 6 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + local.get $1 + i32.gt_u + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $1 local.get $0 - i32.store offset=8 + i32.const 65535 + i32.and + local.tee $0 + i32.gt_u local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.gt_u i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + i32.extend8_s + local.tee $1 + local.get $0 + i32.extend8_s + local.tee $0 + i32.gt_s + local.get $0 local.get $1 - i32.store offset=8 + i32.gt_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i64) (result i32) + local.get $0 local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer + i64.lt_s local.get $0 - i32.store offset=8 + local.get $1 + i64.gt_s + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 + local.get $1 i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $1 - i32.load offset=4 - local.get $2 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.gt_s + i32.sub ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 + (func $"std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.extend16_s + local.tee $1 + local.get $0 + i32.extend16_s + local.tee $0 + i32.gt_s + local.get $0 + local.get $1 + i32.gt_s i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 f64) (result i32) local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer + f64.lt + local.get $0 local.get $1 - i32.store offset=8 + f64.gt + i32.sub + ) + (func $"std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 f32) (result i32) + local.get $0 local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer + f32.lt local.get $0 - i32.store offset=8 + local.get $1 + f32.gt + i32.sub + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - i32.const 4 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer + i32.const 65535 + i32.and + i32.eqz + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.store offset=8 + f64.const 0 + f64.eq + ) + (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + f32.const 0 + f32.eq ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -40799,535 +39685,422 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11264 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $1 - i32.const 7 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 7 - i32.add - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.get $1 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11312 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 11088 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $8 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - i32.store offset=8 + i32.const 7616 local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - i32.trunc_sat_f32_s - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11392 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 local.get $1 - i32.store offset=20 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - local.get $7 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11424 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + local.get $3 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + call $~lib/typedarray/Uint8ClampedArray#__get global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 7616 + local.get $4 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $6 - i32.const 2 + i32.const 1 i32.add - i32.lt_s - br_if $folding-inner1 + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - i32.store offset=8 + i32.const 7616 local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $7 - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_s - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11456 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 local.get $1 - i32.store offset=20 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set local.get $0 - local.get $5 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 + local.get $3 local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + call $~lib/typedarray/Uint8Array#__get global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 16 - i32.const 11488 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|1 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint8Array#__uget (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.add - i32.load8_u + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) + (local $1 i32) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -41343,524 +40116,629 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 + i32.const 7616 + i32.store offset=4 + i32.const 7616 call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=12 loop $for-loop|0 - local.get $2 - local.get $3 + local.get $0 + local.get $4 i32.lt_s if global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - i32.store + i32.const 7616 local.get $0 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.set $4 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer local.get $1 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.tee $5 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int64Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 local.get $4 - i32.ne + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne if - i32.const 11552 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace i32.const 0 i32.const 1568 - i32.const 764 - i32.const 7 + i32.const 570 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $0 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - i32.const 4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11520 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 11088 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $8 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - i32.store offset=8 + i32.const 7616 local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $1 - local.get $6 - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - i32.trunc_sat_f32_u - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11600 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 local.get $1 - i32.store offset=20 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set local.get $0 - local.get $7 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11632 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + local.get $3 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + call $~lib/typedarray/Uint32Array#__get + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 7616 + local.get $4 + i32.const 1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.sub + call $~lib/array/Array#__get + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $6 - i32.const 2 + i32.const 1 i32.add - i32.lt_s - br_if $folding-inner1 + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint32Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - i32.store offset=8 + i32.const 7616 local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $7 - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_u - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11664 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 local.get $1 - i32.store offset=20 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set local.get $0 - local.get $5 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 + local.get $3 local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + call $~lib/typedarray/Uint16Array#__get global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11696 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|1 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#__get i32.const 5 - call $~lib/builtins/abort - unreachable + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -41876,206 +40754,204 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 + i32.const 7616 + i32.store offset=4 + i32.const 7616 call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store offset=12 loop $for-loop|0 - local.get $2 - local.get $3 + local.get $0 + local.get $4 i32.lt_s if global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - i32.store + i32.const 7616 local.get $0 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.set $4 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer local.get $1 - i32.store + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array#__uget - local.tee $5 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Int8Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.extend8_s i32.ne if - i32.const 11760 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace i32.const 0 i32.const 1568 - i32.const 764 - i32.const 7 + i32.const 570 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $0 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $3 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - local.get $3 - i32.add - i32.lt_s - end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $2 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.add - local.set $2 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.tee $4 - i32.wrap_i64 - local.tee $5 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i64.extend_i32_s - i32.const 255 - local.get $5 - i32.sub - i32.const 31 - i32.shr_s - i64.extend_i32_s - local.get $4 - i64.or - i64.and - i64.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) + (local $2 i64) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -42090,733 +40966,841 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7616 i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $2 - local.get $3 - i32.add + local.get $4 i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end end - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $4 + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int64Array#reverse + drop i32.const 0 local.set $0 - loop $for-loop|0 + loop $for-loop|1 local.get $0 - local.get $3 + local.get $4 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $0 - local.get $2 - i32.add - i32.const 255 + call $~lib/typedarray/Int64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 local.get $4 - local.get $0 i32.const 1 - i32.shl - i32.add - i32.load16_s - local.tee $1 i32.sub - i32.const 31 - i32.shr_s - local.get $1 - i32.or - local.get $1 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 + local.get $0 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end global.get $~lib/memory/__stack_pointer - i32.const 12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32>" (local $0 i32) (local $1 i32) - (local $2 f32) - (local $3 f64) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $3 i32.store offset=4 - local.get $7 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + i32.const 7616 i32.store offset=16 - global.get $~lib/memory/__stack_pointer + local.get $3 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 11008 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 7616 + i32.store offset=16 + local.get $1 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $8 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=8 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set local.get $0 - i32.load offset=4 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $10 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $1 - local.get $9 - i32.add - i32.const 255 - local.get $10 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.sub - i32.const 31 - i32.shr_s - local.get $4 - i32.or - local.get $4 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11728 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $3 local.get $0 - i32.store + call $~lib/typedarray/Int32Array#__get + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 11088 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int8Array#get:length + i32.const 7616 local.get $4 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 1 + i32.sub local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $8 - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $2 - local.get $2 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $2 - f32.const 255 - f32.min - f32.const 0 - f32.max - i32.trunc_sat_f32_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end + i32.sub + call $~lib/array/Array#__get + local.get $2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11824 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - local.get $5 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11856 - call $~lib/rt/__newArray - local.set $1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 7616 + i32.store offset=16 + local.get $1 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $4 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=8 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|01 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $5 - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $3 - f64.const 255 - f64.min - f64.const 0 - f64.max - i32.trunc_sat_f64_u - else - i32.const 0 - end - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11888 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + local.get $3 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + call $~lib/typedarray/Int16Array#__get global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 + i32.sub + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $7 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 f64) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 local.get $0 - i32.store + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 11264 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 + i32.const 7616 + i32.store offset=16 + local.get $1 local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $4 - i32.const 7 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7616 local.get $0 - i32.store offset=8 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set local.get $0 - i32.load offset=4 - i32.const 7 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $6 - i32.const 0 - local.set $1 - loop $for-loop|02 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $5 - i32.add - i32.const 255 - local.get $1 - local.get $6 - i32.add - i32.load8_s - local.tee $7 - i32.sub - i32.const 31 - i32.shr_s - local.get $7 - i32.or - local.get $7 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.and - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Float64Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=4 - i32.const 10 - i32.const 0 - i32.const 64 - i32.const 11920 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + local.get $3 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + call $~lib/typedarray/Float64Array#__get global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + f64.convert_i32_s + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|1 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float64Array#subarray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (func $"std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32>" + (local $0 i32) (local $1 i32) - (local $2 i32) + (local $2 f32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -42831,1800 +41815,2586 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7616 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 7616 i32.store offset=4 + i32.const 7616 + call $~lib/array/Array#get:length + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 11008 + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 7616 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/typedarray/Float32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/typedarray/Float32Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=4 + i32.const 7616 + local.get $4 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray local.set $1 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $1 - i32.lt_s + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=4 - local.set $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 577 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3664 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne if - local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>" + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.tee $5 local.get $4 - i32.ne + i32.lt_s if - i32.const 12000 + local.get $2 + local.get $6 + i32.add + i32.load8_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 i32.const 3 + global.set $~argumentsLength local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3632 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $2 - i32.const 6 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s + i32.ne if - local.get $3 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $0 + i32.const 0 + i32.const 1568 + i32.const 388 i32.const 3 - i32.shl - i32.add - i64.load - i64.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $2 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne if - local.get $3 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.add - i32.load8_u - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) + (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3856 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3856 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $7 i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3856 + i32.load + call_indirect (type $27) + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $2 - i32.const 4 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.get $2 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>" + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $1 - i32.const 7 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 14 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3792 + i32.load + call_indirect (type $1) + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne if - local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.add - i32.load8_s - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) + (local $3 i32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 11952 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $8 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - i32.trunc_sat_f32_s - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12048 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12096 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_s - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 1 + i32.shl + local.tee $8 + i32.add + i32.load16_u + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3728 + i32.load + call_indirect (type $1) + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12144 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12192 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $6 + i32.add + i32.load8_s + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $7 + local.get $2 + local.get $0 + i32.const 3600 + i32.load + call_indirect (type $1) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + i32.const 49120 + i32.const 49168 i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3824 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 758 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3824 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.tee $5 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 local.get $4 - i32.ne + i32.lt_s if - i32.const 12288 + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 i32.const 3 + global.set $~argumentsLength local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3824 + i32.load + call_indirect (type $27) + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) + (local $3 i32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=4 - local.get $7 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12240 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $8 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $8 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $3 - i32.trunc_sat_f32_u - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12336 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12384 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $6 - i32.const 2 - i32.add + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 + if local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_u - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3760 + i32.load + call_indirect (type $1) + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12432 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 1 - i32.const 66 - i32.const 12480 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 49120 - i32.const 49168 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/array/Array#get:length - local.set $3 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 1 - else + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 1 + i32.shl + local.tee $8 + i32.add + i32.load16_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3696 + i32.load + call_indirect (type $1) + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $2 - local.get $3 + i32.const 16 i32.add - i32.lt_s - end - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result f64) local.get $0 - i32.store offset=8 local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer + f64.mul ) - (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $7 i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 3 + i32.shl + local.tee $8 + i32.add + f64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3920 + i32.load + call_indirect (type $32) + f64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result f32) local.get $0 - i32.store local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + f32.mul ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3888 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3888 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if + local.get $6 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + f32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $8 + i32.add + local.get $9 + local.get $3 + local.get $0 + i32.const 3888 + i32.load + call_indirect (type $33) + f32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 389 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.ne if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#__uget - local.tee $5 - local.get $4 - i32.ne - if - i32.const 12592 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -44639,73 +44409,42 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7728 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7728 i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $2 - i32.const 6 - i32.add - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 loop $for-loop|0 local.get $0 - local.get $2 + local.get $1 i32.lt_s if - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $1 + i32.const 7728 local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 i32.const 1 i32.add @@ -44714,782 +44453,1016 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length local.get $2 - i32.lt_s + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.add - i32.load8_u - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 i32.const 0 - i32.store offset=8 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $2 + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.add - i32.lt_s + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 + local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $1 - i32.const 7 - i32.add - i32.lt_s + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 28 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $3 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.add - i32.load8_s - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12528 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $6 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $10 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $10 - local.get $1 - i32.const 2 - i32.shl - local.tee $7 - i32.add - f32.load - local.set $3 - local.get $7 - local.get $9 - i32.add - local.get $3 - i32.trunc_sat_f32_s - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12640 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=20 - local.get $0 - local.get $8 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12704 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_s - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12768 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 + i32.const 7728 + i32.store offset=12 + local.get $2 local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 17 - i32.const 12832 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint8Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 i32.const 0 - i32.store + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $1 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -45505,530 +45478,524 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7728 i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 + i32.const 7728 + i32.store offset=4 + i32.const 7728 call $~lib/array/Array#get:length - local.get $3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const -1 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 11 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const -1 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 3 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 758 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Uint32Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#__uget - local.tee $5 - local.get $4 - i32.ne - if - i32.const 12960 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 12896 - call $~lib/rt/__newArray - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $6 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $10 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $10 - local.get $1 - i32.const 2 - i32.shl - local.tee $7 - i32.add - f32.load - local.set $3 - local.get $7 - local.get $9 - i32.add - local.get $3 - i32.trunc_sat_f32_u - i32.const 0 - local.get $3 - local.get $3 - f32.sub - f32.const 0 - f32.eq - select - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 13008 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=20 - local.get $0 - local.get $8 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 13072 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 8 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $4 - i32.trunc_sat_f64_u - i32.const 0 - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.eq - select - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 13136 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 67 - i32.const 13200 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32>" + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -46043,69 +46010,40 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 7728 i32.store global.get $~lib/memory/__stack_pointer - i32.const 11008 + i32.const 7728 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 + i32.const 7728 call $~lib/array/Array#get:length local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length local.get $1 - i32.lt_s - if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11008 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 i32.store offset=8 - i32.const 11012 - i32.load - local.set $3 - i32.const 0 - local.set $0 loop $for-loop|0 local.get $0 local.get $1 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 local.get $2 local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $3 + i32.const 7728 local.get $0 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.store + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set local.get $0 i32.const 1 i32.add @@ -46114,2311 +46052,2616 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 0 - i32.store + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 - i32.shl - i32.add - i64.load + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 i32.const 0 - i32.store + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $3 + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 758 + i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $5 - local.get $4 - i64.ne - if - i32.const 13376 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i64_s - local.get $5 - f64.convert_i64_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length local.get $2 - i32.const 6 - i32.add - i32.lt_s + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 48 - i32.add - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 + local.get $2 + i32.store offset=4 local.get $2 i32.const 3 - i32.shl - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.const 2 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length local.get $2 - i32.lt_s + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 - i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.add - i64.load8_u - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint32Array#subarray + local.tee $0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - local.set $2 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $2 i32.const 4 - i32.add - i32.lt_s + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 32 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.set $1 + i32.const 5 i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $1 - i32.const 7 - i32.add - i32.lt_s + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne if - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 56 - i32.add - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $3 + i32.const 10 i32.const 0 - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $3 - i32.add - i64.load8_s - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13264 - call $~lib/rt/__newArray - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $7 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $4 - i64.trunc_sat_f32_s - i64.const 0 - local.get $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - select - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13424 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13536 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 3 - i32.shl - local.tee $9 - i32.add - f64.load - local.set $3 - local.get $7 - local.get $9 - i32.add - local.get $3 - i64.trunc_sat_f64_s - i64.const 0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - select - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13648 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13760 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 i32.const 0 - i32.store + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Uint16Array#subarray + local.tee $0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $1 i32.const 3 - i32.shl - i32.add - i64.load + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 i32.const 0 - i32.store + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $3 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 i32.ne if i32.const 0 i32.const 1568 - i32.const 758 + i32.const 632 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Uint64Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#__uget - local.tee $5 - local.get $4 - i64.ne - if - i32.const 13984 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i64_u - local.get $5 - f64.convert_i64_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 13872 - call $~lib/rt/__newArray - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=20 - local.get $0 - local.get $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $7 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $9 - loop $for-loop|0 - local.get $1 - local.get $7 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $9 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $4 - i64.trunc_sat_f32_u - i64.const 0 - local.get $4 - local.get $4 - f32.sub - f32.const 0 - f32.eq - select - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 14032 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - local.get $0 - local.get $6 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 14144 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11184 - call $~lib/array/Array#get:length - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $6 - i32.const 2 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11184 - i32.store offset=8 - i32.const 11188 - i32.load - local.set $8 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $8 - local.get $1 - i32.const 3 - i32.shl - local.tee $9 - i32.add - f64.load - local.set $3 - local.get $7 - local.get $9 - i32.add - local.get $3 - i64.trunc_sat_f64_u - i64.const 0 - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.eq - select - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 14256 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=20 - local.get $0 - local.get $5 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 local.get $2 - i32.store offset=20 - local.get $0 - local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 69 - i32.const 14368 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 i32.ne if i32.const 0 i32.const 1568 - i32.const 758 + i32.const 614 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.tee $5 - local.get $4 - f32.ne - if - i32.const 14544 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.promote_f32 - local.get $5 - f64.promote_f32 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $4 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $8 - loop $for-loop|0 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 2 - i32.shl - local.tee $5 - i32.add - local.get $5 - local.get $8 - i32.add - i32.load - f32.convert_i32_s - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 62 - i32.const 14480 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - local.get $0 - i32.const 11088 - i32.const 3 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 62 - i32.const 14592 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $6 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $4 - i32.const 6 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $6 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - f32.convert_i64_s - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 62 - i32.const 14656 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $4 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $5 + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $1 - loop $for-loop|01 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - f32.convert_i32_u - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int32Array#get:length + i32.const 7728 + i32.store offset=12 local.get $2 - i32.const 4 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $1 - loop $for-loop|02 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f32.convert_i32_s - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $2 - i32.const 7 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=8 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set local.get $0 - i32.load offset=4 - i32.const 28 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $4 - i32.const 0 - local.set $1 - loop $for-loop|03 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_s - f32.convert_i32_s - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|03 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 0 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const -1 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 11 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const -1 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i64.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Int64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=4 - i32.const 10 - i32.const 2 - i32.const 62 - i32.const 14720 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + i32.const 7728 + i32.store offset=12 + local.get $2 local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 i32.const 0 - i32.store + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $1 i32.const 3 - i32.shl - i32.add - f64.load + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16>" + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -48434,1214 +48677,1058 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $3 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7728 i32.store - local.get $1 - call $~lib/array/Array#get:length - local.get $3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 758 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.tee $5 - local.get $4 - f64.ne - if - i32.const 14896 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - local.get $5 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11008 - call $~lib/array/Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $5 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=8 - i32.const 11012 - i32.load - local.set $7 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - f64.convert_i32_s - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 63 - i32.const 14784 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11088 - call $~lib/array/Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $5 - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=8 - i32.const 11092 - i32.load - local.set $7 - i32.const 0 - local.set $1 - loop $for-loop|00 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 63 - i32.const 14944 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - call $~lib/typedarray/Int64Array#get:length - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $5 - i32.const 6 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 48 - i32.add - local.set $6 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $1 - loop $for-loop|01 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - local.tee $7 - i32.add - local.get $2 - local.get $7 - i32.add - i64.load - f64.convert_i64_s - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 63 - i32.const 15056 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length + i32.const 7728 + i32.store offset=12 local.get $2 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - local.set $5 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $1 - loop $for-loop|02 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - f64.convert_i32_u - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|02 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $2 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 11 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const -1 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Int16Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length local.get $2 - i32.const 4 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 32 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $1 - loop $for-loop|03 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f64.convert_i32_s - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|03 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 11264 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11264 - call $~lib/array/Array#get:length - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - call $~lib/typedarray/Int64Array#get:length + i32.const 7728 + i32.store offset=12 local.get $2 - i32.const 7 - i32.add - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - i32.const 56 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 11264 - i32.store offset=8 - i32.const 11268 - i32.load - local.set $4 - i32.const 0 - local.set $1 - loop $for-loop|04 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_s - f64.convert_i32_s - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|04 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer + i32.const 7728 local.get $0 - i32.store offset=4 - i32.const 10 - i32.const 3 - i32.const 63 - i32.const 15168 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + local.set $0 + br $for-loop|0 end - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 0 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const -1 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const 10 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -100 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 11 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const -1 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f64.const 3 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1902 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const 100 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -10 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load8_s - local.set $1 - local.get $0 - i32.load8_s offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store8 - local.get $0 - i32.load8_s offset=2 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store8 offset=1 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_s - local.set $1 - local.get $0 - i32.load8_s offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store8 - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store8 offset=1 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + local.get $2 + i32.store offset=4 + local.get $2 + f64.const 1 + i32.const -11 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.ne + if i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Float64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 3 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.set $1 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 4 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + if i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 9 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 10 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 1 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $"std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -49656,465 +49743,522 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=12 + local.get $2 + local.get $0 + i32.const 7728 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 0 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 603 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 604 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const -1 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 605 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 606 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 609 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const 10 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 610 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const -100 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 611 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 11 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const -1 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $2 + f32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 617 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 618 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 619 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const 100 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 620 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const -10 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 621 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + f32.const 1 + i32.const -11 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 622 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 9 + call $~lib/typedarray/Float32Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 4 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load offset=4 + f32.const 5 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 628 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - call $~lib/typedarray/Int8Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT + f32.const 9 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + i32.store offset=4 + local.get $0 + f32.const 10 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 11 i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - i32.load8_u offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store8 - local.get $0 - i32.load8_u offset=2 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store8 offset=1 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - i32.load8_u offset=1 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store8 - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store8 offset=1 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 1 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if i32.const 0 - local.set $1 + i32.const 1568 + i32.const 632 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1568 + i32.const 633 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -50129,43 +50273,60 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - global.get $~lib/memory/__stack_pointer + i32.const 65535 + i32.and + i32.const 7152 local.get $1 - i32.store + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount local.get $1 - call $~lib/util/sort/SORT + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -50184,412 +50345,57 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load16_s - local.set $1 - local.get $0 - i32.load16_s offset=2 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store16 - local.get $0 - i32.load16_s offset=4 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store16 offset=2 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store16 offset=4 - end - local.get $0 - i32.load16_s - local.set $1 - local.get $0 - i32.load16_s offset=2 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store16 - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store16 offset=2 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 1 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store + i32.const 7152 + local.get $1 + call $~lib/array/Array#__get + f64.convert_i32_s + local.get $0 + f64.ne + if i32.const 0 - local.get $1 - i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if i32.const 0 - local.set $1 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $11 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 - end - end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $"std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -50604,2885 +50410,3394 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 7152 i32.store + i32.const 7152 local.get $1 - call $~lib/util/sort/SORT + call $~lib/array/Array#__get + f32.convert_i32_s + local.get $0 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 536 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + local.get $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 537 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 538 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $7 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4016 + i32.load + call_indirect (type $1) + if + local.get $0 + local.get $4 + i32.add + local.get $5 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load16_u - local.set $1 - local.get $0 - i32.load16_u offset=2 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store16 - local.get $0 - i32.load16_u offset=4 - local.set $5 - i32.const 2 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint8Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $7 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 3984 + i32.load + call_indirect (type $1) + if local.get $0 - local.get $5 - local.get $1 - local.get $3 local.get $4 - select - local.tee $1 - local.get $1 + i32.add local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store16 offset=2 + i32.store8 local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store16 offset=4 + i32.const 1 + i32.add + local.set $0 end - local.get $0 - i32.load16_u - local.set $1 - local.get $0 - i32.load16_u offset=2 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store16 - local.get $0 - local.get $1 - local.get $3 local.get $2 - select - i32.store16 offset=2 - br $folding-inner0 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 end - i32.const 33 local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.const 1 - i32.shl - call $~lib/rt/tlsf/allocateBlock + call $~lib/typedarray/Uint8Array#__get i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $12 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $8 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 0 - local.get $1 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 + local.get $2 + i32.const 3 i32.shl - local.tee $3 - local.get $10 i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4208 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $8) if - local.get $3 - local.get $11 + local.get $4 + local.get $0 + i32.const 3 + i32.shl i32.add - i32.load + local.get $5 + i64.store + local.get $0 i32.const 1 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int16Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.const 2 + i32.gt_u ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4144 + i32.load + call_indirect (type $1) + if + local.get $4 local.get $0 - i32.load offset=8 - local.set $5 i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 + i32.shl + i32.add local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store offset=4 + i32.store local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store offset=8 + i32.const 1 + i32.add + local.set $0 end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store - local.get $0 - local.get $1 - local.get $3 local.get $2 - select - i32.store offset=4 - br $folding-inner0 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 + end + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if i32.const 0 - local.get $1 - i32.const 1 - i32.sub + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 33 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $12 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.gt_u + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $8 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 0 - local.get $1 i32.const 1 - i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - i32.add - local.tee $1 - i32.const 32 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 + local.get $7 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end - local.get $7 - i32.const 2 i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 + i32.load16_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add + local.get $2 + local.get $8 + i32.const 4080 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $1) if - local.get $3 - local.get $11 - i32.add - i32.load + local.get $4 + local.get $0 i32.const 1 + i32.shl i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + local.get $5 + i32.store16 local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns + i32.const 1 + i32.add + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.extend8_s + i32.const 2 + i32.gt_s ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $4 - select - i32.store - local.get $0 - i32.load offset=8 - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $5 - local.get $1 - local.get $3 - local.get $4 - select - local.tee $1 - local.get $1 - local.get $5 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $3 - select - i32.store offset=4 - local.get $0 - local.get $1 - local.get $5 - local.get $3 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - local.get $2 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - local.tee $2 - select - i32.store - local.get $0 - local.get $1 - local.get $3 - local.get $2 - select - i32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $10 - i32.add - local.set $11 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $10 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 i32.const 4 - i32.add - local.set $12 + call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub - local.tee $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $9 - local.get $9 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $9 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $9 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $9 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $9 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $13 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $13 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $10 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $11 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 local.get $7 - i32.const 2 - i32.shl - local.tee $1 - local.get $10 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $11 i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $10 - i32.add + local.get $2 + local.get $8 + i32.const 3952 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $1) if - local.get $3 - local.get $11 + local.get $0 + local.get $4 i32.add - i32.load + local.get $5 + i32.store8 + local.get $0 i32.const 1 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $9 - local.get $12 - local.get $2 - call $~lib/util/sort/mergeRuns + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $12 - call $~lib/rt/tlsf/__free - local.get $10 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i64.const 2 + i64.gt_s ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i64) - (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i64.load - local.set $9 - local.get $0 - i64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $9 - local.get $9 - local.get $16 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store - local.get $0 - i64.load offset=16 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $16 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store offset=8 - local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - i64.store offset=16 - end - local.get $0 - i64.load - local.set $9 - local.get $0 - i64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $9 - local.get $9 - local.get $16 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store - local.get $0 - local.get $9 - local.get $16 - local.get $1 - select - i64.store offset=8 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 - end - i32.const 33 - local.get $1 - i32.clz - i32.sub - local.tee $4 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 i32.shl - local.tee $5 i32.const 1 - i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 local.get $3 - local.get $4 - i32.lt_u + i32.lt_s if - local.get $11 - local.get $3 - i32.const 2 + local.get $7 + local.get $2 + i32.const 3 i32.shl i32.add - i32.const -1 - i32.store - local.get $3 + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4176 + i32.load + call_indirect (type $8) + if + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 i32.const 1 i32.add - local.set $3 - br $for-loop|1 + local.set $2 + br $for-loop|0 end end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT local.get $1 + local.get $4 + local.get $0 i32.const 3 i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $2 + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 local.get $0 - i32.const 0 + i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.tee $10 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.tee $1 - i32.const 32 - i32.lt_s + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - local.set $1 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.gt_s + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $9 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $11 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end local.get $7 + local.get $2 i32.const 2 i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add + local.get $2 + local.get $8 + i32.const 4112 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $1) if - local.get $3 - local.get $12 - i32.add - i32.load - i32.const 1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.store local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns + i32.const 1 + i32.add + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.extend16_s + i32.const 2 + i32.gt_s ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i64) - (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int16Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i64.load - local.set $9 - local.get $0 - i64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $9 - local.get $9 - local.get $16 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store - local.get $0 - i64.load offset=16 - local.set $17 - i32.const 2 - global.set $~argumentsLength + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $2 + local.get $8 + i32.const 4048 + i32.load + call_indirect (type $1) + if + local.get $4 local.get $0 - local.get $17 - local.get $9 - local.get $16 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store offset=8 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - i64.store offset=16 + i32.const 1 + i32.add + local.set $0 end - local.get $0 - i64.load - local.set $9 - local.get $0 - i64.load offset=8 - local.set $16 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $9 - local.get $9 - local.get $16 local.get $2 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - local.tee $1 - select - i64.store - local.get $0 - local.get $9 - local.get $16 - local.get $1 - select - i64.store offset=8 - br $folding-inner0 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 end - i32.const 33 local.get $1 - i32.clz - i32.sub - local.tee $4 - i32.const 2 - i32.shl - local.tee $5 + local.get $4 + local.get $0 i32.const 1 i32.shl - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - global.get $~lib/rt/tlsf/ROOT - local.get $6 - call $~lib/rt/tlsf/allocateBlock + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int16Array#__get i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u - if - local.get $11 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.ne if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 3 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $13 + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.gt + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Float64Array#constructor + local.tee $8 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 0 - local.get $1 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 - local.get $1 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $1 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s if - global.get $~lib/memory/__stack_pointer + local.get $7 local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 + i32.const 3 + i32.shl i32.add - local.tee $6 - local.get $10 + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength + local.get $5 local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s + local.get $8 + i32.const 4272 + i32.load + call_indirect (type $12) if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + local.get $4 local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 + i32.const 3 + i32.shl i32.add - local.tee $5 local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $9 - i64.div_u - local.get $5 - local.get $6 - i32.add + local.get $2 i32.const 1 i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $9 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 - local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $14 - local.get $11 - i32.add - local.tee $15 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $14 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $15 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end - end + local.set $2 + br $for-loop|0 + end + end + local.get $1 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 2 + f32.gt + ) + (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Float32Array#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if local.get $7 + local.get $2 i32.const 2 i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + i32.const 3 + global.set $~argumentsLength local.get $5 - local.set $4 - local.get $7 - local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add + local.get $2 + local.get $8 + i32.const 4240 i32.load - local.tee $4 - i32.const -1 - i32.ne + call_indirect (type $13) if - local.get $3 - local.get $12 + local.get $4 + local.get $0 + i32.const 2 + i32.shl i32.add - i32.load + local.get $5 + f32.store + local.get $0 i32.const 1 i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns + local.set $0 end - local.get $1 + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $for-loop|4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free + local.get $1 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0" (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.store offset=4 + i64.const 1 + i64.and + i64.eqz + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/typedarray/Int64Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + i32.extend8_s + i32.const 1 + i32.and + i32.eqz + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.extend16_s + i32.const 1 + i32.and + i32.eqz ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i64) - (local $15 i32) - (local $16 i32) - (local $17 f32) - (local $18 f32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $folding-inner0 - local.get $1 - i32.const 48 - i32.le_s + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0" (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + block $__inlined_func$~lib/math/NativeMath.mod$1 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $6 + i64.const 2047 + i64.eq if - local.get $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - block $break|0 - block $case1|0 - local.get $1 - i32.const 3 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - f32.load - local.set $9 - local.get $0 - f32.load offset=4 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store - local.get $0 - f32.load offset=8 - local.set $18 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $18 - local.get $9 - local.get $17 - local.get $1 - select - local.tee $9 - local.get $9 - local.get $18 - local.get $2 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store offset=4 + local.get $0 + local.get $0 + f64.add + local.tee $0 + local.get $0 + f64.div + br $__inlined_func$~lib/math/NativeMath.mod$1 + end + local.get $4 + i64.const 1 + i64.shl + local.tee $3 + i64.const -9223372036854775808 + i64.le_u + if + local.get $0 + local.get $3 + i64.const -9223372036854775808 + i64.ne + f64.convert_i32_u + f64.mul + br $__inlined_func$~lib/math/NativeMath.mod$1 + end + local.get $4 + i64.const 63 + i64.shr_u + local.set $5 + local.get $6 + i64.eqz + if (result i64) + local.get $4 + i64.const 1 + local.get $6 + local.get $4 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $6 + i64.sub + i64.shl + else + local.get $4 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $3 + loop $while-continue|0 + local.get $6 + i64.const 1024 + i64.gt_s + if + local.get $3 + i64.const 4503599627370496 + i64.ge_u + if (result i64) local.get $0 - local.get $9 - local.get $18 - local.get $1 - select - f32.store offset=8 + f64.const 0 + f64.mul + local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$1 + drop + local.get $3 + i64.const 4503599627370496 + i64.sub + else + local.get $3 end - local.get $0 - f32.load - local.set $9 - local.get $0 - f32.load offset=4 - local.set $17 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $17 - local.get $9 - local.get $9 - local.get $17 - local.get $2 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - local.tee $1 - select - f32.store - local.get $0 - local.get $9 - local.get $17 - local.get $1 - select - f32.store offset=4 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + i64.const 1 + i64.shl + local.set $3 + local.get $6 + i64.const 1 + i64.sub + local.set $6 + br $while-continue|0 + end + end + local.get $3 + i64.const 4503599627370496 + i64.ge_u + if local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - br $folding-inner0 + f64.const 0 + f64.mul + local.get $3 + i64.const 4503599627370496 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod$1 + drop + local.get $3 + i64.const 4503599627370496 + i64.sub + local.set $3 end - i32.const 33 - local.get $1 - i32.clz - i32.sub + local.get $6 + local.get $3 + i64.const 11 + i64.shl + i64.clz local.tee $4 - i32.const 2 - i32.shl - local.tee $5 - i32.const 1 - i32.shl + i64.sub local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - local.get $5 - global.get $~lib/rt/tlsf/ROOT + local.get $3 + local.get $4 + i64.shl + local.set $3 local.get $6 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $11 - i32.add - local.set $12 - loop $for-loop|1 + i64.const 0 + i64.gt_s + if (result i64) local.get $3 - local.get $4 - i32.lt_u - if - local.get $11 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end + i64.const 4503599627370496 + i64.sub + local.get $6 + i64.const 52 + i64.shl + i64.or + else + local.get $3 + i64.const 1 + local.get $6 + i64.sub + i64.shr_u end - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $5 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + end + f64.const 0 + f64.eq + ) + (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0" (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + block $__inlined_func$~lib/math/NativeMathf.mod (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $1 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $2 + i32.const 255 + i32.eq if - call $~lib/rt/tlsf/initialize + local.get $0 + local.get $0 + f32.add + local.tee $0 + local.get $0 + f32.div + br $__inlined_func$~lib/math/NativeMathf.mod end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $13 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - i32.const 0 local.get $1 i32.const 1 - i32.sub - local.tee $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $4 - i32.const 1 - i32.add - local.tee $1 - i32.const 32 - i32.lt_s + i32.shl + local.tee $3 + i32.const -2147483648 + i32.le_u if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store local.get $0 - i32.const 0 - i32.const 31 - local.get $10 - local.get $10 - i32.const 31 - i32.ge_s - select - local.tee $4 + local.get $3 + i32.const -2147483648 + i32.ne + f32.convert_i32_u + f32.mul + br $__inlined_func$~lib/math/NativeMathf.mod + end + local.get $1 + i32.const -2147483648 + i32.and + local.set $3 + local.get $2 + if (result i32) + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else local.get $1 + i32.const 1 local.get $2 - call $~lib/util/sort/insertionSort + local.get $1 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $2 + i32.sub + i32.shl end - i32.const 0 local.set $1 - i32.const 0 - local.set $3 - loop $while-continue|2 - local.get $4 - local.get $10 - i32.lt_s + loop $while-continue|0 + local.get $2 + i32.const 128 + i32.gt_s if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - i32.const 1 - i32.add - local.tee $6 - local.get $10 - local.get $2 - call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 - i32.sub - i32.const 1 - i32.add - local.tee $7 - i32.const 32 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store + local.get $1 + i32.const 8388608 + i32.ge_u + if (result i32) local.get $0 - local.get $6 - local.get $10 - local.get $6 - i32.const 31 - i32.add - local.tee $5 - local.get $5 - local.get $10 - i32.gt_s - select - local.tee $5 - local.get $7 - local.get $2 - call $~lib/util/sort/insertionSort - end - local.get $3 - local.get $6 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $10 - i32.const 1 - i32.add - i64.extend_i32_u - local.tee $14 - i64.div_u - local.get $5 - local.get $6 - i32.add - i32.const 1 - i32.add - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $14 - i64.div_u - i64.xor - i32.wrap_i64 - i32.clz - local.set $7 - loop $for-loop|3 + f32.const 0 + f32.mul + local.get $1 + i32.const 8388608 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop + local.get $1 + i32.const 8388608 + i32.sub + else local.get $1 - local.get $7 - i32.gt_u - if - local.get $1 - i32.const 2 - i32.shl - local.tee $15 - local.get $11 - i32.add - local.tee $16 - i32.load - local.tee $8 - i32.const -1 - i32.ne - if - local.get $12 - local.get $15 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $16 - i32.const -1 - i32.store - local.get $8 - local.set $3 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|3 - end end - local.get $7 - i32.const 2 + i32.const 1 i32.shl - local.tee $1 - local.get $11 - i32.add - local.get $3 - i32.store - local.get $1 - local.get $12 - i32.add - local.get $4 - i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 - local.get $7 local.set $1 - br $while-continue|2 - end - end - loop $for-loop|4 - local.get $1 - if - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - local.get $11 - i32.add - i32.load - local.tee $4 - i32.const -1 - i32.ne - if - local.get $3 - local.get $12 - i32.add - i32.load - i32.const 1 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $10 - local.get $13 - local.get $2 - call $~lib/util/sort/mergeRuns - end - local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $1 - br $for-loop|4 + local.set $2 + br $while-continue|0 end end - local.get $13 - call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 8388608 + i32.ge_u + if + local.get $0 + f32.const 0 + f32.mul + local.get $1 + i32.const 8388608 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop + local.get $1 + i32.const 8388608 + i32.sub + local.set $1 + end + local.get $2 + local.get $1 + i32.const 8 + i32.shl + i32.clz + local.tee $4 + i32.sub + local.set $2 + local.get $1 + local.get $4 + i32.shl + local.set $1 + local.get $2 + i32.const 0 + i32.gt_s + if (result i32) + local.get $1 + i32.const 8388608 + i32.sub + local.get $2 + i32.const 23 + i32.shl + i32.or + else + local.get $1 + i32.const 1 + local.get $2 + i32.sub + i32.shr_u + end + local.get $3 + i32.or + f32.reinterpret_i32 end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $~lib/util/sort/SORT - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + f32.const 0 + f32.eq ) (func $start:std/typedarray (local $0 i32) @@ -56883,7 +57198,7 @@ local.get $1 i32.const 3184 i32.load - call_indirect (type $22) + call_indirect (type $26) local.set $4 local.get $0 i32.const 1 @@ -57007,7 +57322,7 @@ local.get $1 i32.const 3216 i32.load - call_indirect (type $23) + call_indirect (type $25) local.set $5 local.get $0 i32.const 1 @@ -58883,7 +59198,7 @@ local.get $1 i32.const 3536 i32.load - call_indirect (type $22) + call_indirect (type $26) local.set $4 local.get $0 i32.const 1 @@ -59009,7 +59324,7 @@ local.get $1 i32.const 3568 i32.load - call_indirect (type $23) + call_indirect (type $25) local.set $5 local.get $0 i32.const 1 @@ -63253,7 +63568,7 @@ local.get $1 i32.const 7488 i32.load - call_indirect (type $33) + call_indirect (type $35) local.get $0 i32.const 1 i32.add @@ -63482,13 +63797,13 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $"~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 i32.const 0 local.get $1 call $~lib/typedarray/Int64Array#get:length @@ -63590,13 +63905,13 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $"~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 i32.const 0 local.get $1 call $~lib/typedarray/Int32Array#get:length @@ -67799,320 +68114,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - i32.shl - local.tee $5 - i32.const 1 - call $~lib/rt/itcms/__new - local.set $1 - local.get $3 - if - local.get $1 - local.get $3 - local.get $5 - memory.copy - end - local.get $1 - i32.store - i32.const 16 - local.get $2 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 - i32.store - local.get $2 - local.get $1 - call $~lib/rt/itcms/__link - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 - i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - i32.const 1 - i32.shl - local.tee $0 - select - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $1 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $0 - local.get $3 - i32.add - local.get $2 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - local.get $0 - if - local.get $3 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8000 - return - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.tee $2 - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 52 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) ) diff --git a/tests/compiler/std/uri.release.wat b/tests/compiler/std/uri.release.wat index d6410645a6..e69563783a 100644 --- a/tests/compiler/std/uri.release.wat +++ b/tests/compiler/std/uri.release.wat @@ -1,13 +1,13 @@ (module - (type $0 (func)) - (type $1 (func (param i32 i32) (result i32))) - (type $2 (func (param i32) (result i32))) + (type $0 (func (param i32 i32) (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32 i32 i32) (result i32))) (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i64))) - (type $8 (func (result i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -153,790 +153,463 @@ (data $66 (i32.const 4336) "\04\00\00\00 \00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1376 - call $~lib/rt/itcms/__visit - i32.const 1184 - call $~lib/rt/itcms/__visit - i32.const 1584 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1248 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.eqz + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s if - return + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$132 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 37124 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$132 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 4336 - i32.load - i32.gt_u - if - i32.const 1376 - i32.const 1440 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 4340 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 local.get $0 - i32.store offset=8 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 + i32.store local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1520 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 + i32.ge_u + if (result i32) local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const 7 i32.and - local.set $3 local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end + i32.const 7 + i32.and + i32.or + else + i32.const 1 end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and i32.eqz if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$88 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$88 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end i32.const 0 - i32.const 1520 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.set $3 end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + i32.eqz + return end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/uri/encodeURIComponent (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s if - i32.const 0 - i32.const 1520 - i32.const 233 - i32.const 14 + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1068 + call $~lib/util/uri/encode + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1520 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/uri/decodeURI (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s if - i32.const 0 - i32.const 1520 - i32.const 251 - i32.const 14 + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 0 + call $~lib/util/uri/decode + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - local.get $2 i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/uri/decodeURIComponent (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s if - local.get $3 - local.get $1 - i32.store offset=4 + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 local.get $0 - i32.load offset=4 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 + i32.shr_u + i32.const 1 + call $~lib/util/uri/decode + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + (func $~lib/uri/encodeURI (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4356 + i32.lt_s if - i32.const 0 - i32.const 1520 - i32.const 382 - i32.const 14 + i32.const 37152 + i32.const 37200 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1520 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1520 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 i32.sub - local.tee $3 + i32.load offset=16 i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 + i32.shr_u + i32.const 3388 + call $~lib/util/uri/encode + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz if - unreachable + return end - i32.const 37136 - i32.const 0 - i32.store - i32.const 38704 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 2 - i32.shl - i32.const 37136 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$132 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if local.get $1 - i32.const 16 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 37124 i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 37136 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$132 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 + else + local.get $0 + i32.const 4336 + i32.load + i32.gt_u + if + i32.const 1376 + i32.const 1440 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 4340 i32.add - local.set $0 - br $for-loop|0 + i32.load + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 37136 - i32.const 38708 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 37136 - global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) @@ -1184,68 +857,382 @@ call $~lib/rt/tlsf/insertBlock end end - i32.const 10 - return + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $0 + local.get $1 + local.get $3 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $2 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $3 i32.const 4 - i32.shr_u - local.set $1 - else + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 536870910 - i32.lt_u + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 + i32.const 0 + i32.const 1520 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 local.get $1 - i32.const 31 + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $2 i32.const 16 i32.lt_u - local.get $2 + local.get $5 i32.const 23 i32.lt_u i32.and @@ -1253,78 +1240,66 @@ if i32.const 0 i32.const 1520 - i32.const 334 + i32.const 251 i32.const 14 call $~lib/builtins/abort unreachable end local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add i32.const 2 i32.shl i32.add - i32.load offset=4 - i32.const -1 local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1424,8 +1399,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1453,7 +1426,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1467,7 +1441,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1639,43 +1615,30 @@ memory.fill local.get $1 ) - (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - local.get $0 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $3 - local.get $1 - i32.store offset=16 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end - local.get $1 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $0 - local.get $1 - local.get $3 - i32.load offset=16 - local.tee $0 - local.get $0 - local.get $1 - i32.gt_u - select - memory.copy - local.get $2 + unreachable ) (func $~lib/util/uri/encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2605,339 +2568,377 @@ local.get $9 end ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - call $start:std/uri - ) - (func $~lib/uri/encodeURIComponent (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4356 - i32.lt_s - if - i32.const 37152 - i32.const 37200 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1068 - call $~lib/util/uri/encode - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4356 - i32.lt_s - if - i32.const 37152 - i32.const 37200 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 + i32.const 4 i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer + local.set $1 + else local.get $1 - i32.store - local.get $3 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end local.get $1 - i32.const 20 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 i32.sub - i32.load offset=16 - i32.const 1 i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub local.set $2 - global.get $~lib/memory/__stack_pointer + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 + i32.ctz + local.get $2 i32.const 4 - i32.ge_u + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $2 - i32.const 7 - i32.and + i32.ctz local.get $1 - i32.const 7 - i32.and - i32.or + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - i32.const 1 + i32.const 0 end - i32.eqz + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37136 + i32.const 0 + i32.store + i32.const 38704 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u if - loop $do-loop|0 - local.get $2 - i64.load + local.get $0 + i32.const 2 + i32.shl + i32.const 37136 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 - i64.load - i64.eq + i32.const 16 + i32.lt_u if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 local.get $0 i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - block $__inlined_func$~lib/util/string/compareImpl$88 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 + i32.shl local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$88 - local.get $2 + i32.add i32.const 2 + i32.shl + i32.const 37136 i32.add - local.set $2 + i32.const 0 + i32.store offset=96 local.get $1 - i32.const 2 + i32.const 1 i32.add local.set $1 - br $while-continue|1 + br $for-loop|1 end end - i32.const 0 - local.set $3 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + i32.const 37136 + i32.const 38708 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37136 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/uri/encodeURI (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4356 - i32.lt_s + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 37152 - i32.const 37200 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1520 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 3388 - call $~lib/util/uri/encode - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $1 + i32.const 19 i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/uri/decodeURIComponent (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer + i32.const -16 + i32.and i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4356 - i32.lt_s + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - i32.const 37152 - i32.const 37200 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1520 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - call $~lib/util/uri/decode - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/uri/decodeURI (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4356 - i32.lt_s + local.tee $3 + i32.const 20 + i32.lt_u if - i32.const 37152 - i32.const 37200 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.const 20 + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 i32.sub - i32.load offset=16 + local.tee $3 i32.const 1 - i32.shr_u + i32.or + i32.or + i32.store + local.get $1 i32.const 0 - call $~lib/util/uri/decode - global.get $~lib/memory/__stack_pointer + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1376 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 1584 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1248 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~start + call $start:std/uri ) (func $start:std/uri (local $0 i32) diff --git a/tests/compiler/super-inline.release.wat b/tests/compiler/super-inline.release.wat index 35da8ff691..d1ffdaa805 100644 --- a/tests/compiler/super-inline.release.wat +++ b/tests/compiler/super-inline.release.wat @@ -1,7 +1,7 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32) (result i32))) + (type $0 (func (param i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) (type $3 (func (param i32 i32))) (type $4 (func (param i32 i32 i32 i32))) (type $5 (func (param i32 i32 i64))) @@ -34,63 +34,6 @@ (data $8 (i32.const 1440) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $super-inline/foo - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $super-inline/bar - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1248 - call $~lib/rt/itcms/__visit - i32.const 1056 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|0 - end - end - ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) (local $2 i32) @@ -635,127 +578,331 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1392 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $3 + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 4 + local.get $2 + i32.load offset=1568 + memory.size + local.tee $1 + i32.const 16 + i32.shl i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $3 local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end end - else - local.get $0 - i32.const 1572 - i32.add + local.get $2 local.get $1 - i32.gt_u + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 402 - i32.const 5 + i32.const 499 + i32.const 16 call $~lib/builtins/abort unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and local.get $1 - i32.sub - local.tee $3 - i32.const 20 + i32.load + i32.const -4 + i32.and + i32.const 28 i32.lt_u if - return + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable end + local.get $2 local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add + i32.load local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $1 + i32.const 32 + i32.add + local.tee $3 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.const 0 + memory.fill + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $super-inline/Bar + block $super-inline/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $1 @@ -829,582 +976,270 @@ i32.const 34240 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + global.get $super-inline/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $super-inline/bar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1120 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34236 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34236 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1392 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/__visit_members local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (func $super-inline/Foo#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$69 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$69 - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $1 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - local.get $3 - memory.grow + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - unreachable - end + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 499 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $1 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 501 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $2 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 + i32.const 34256 + i32.const 34304 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $super-inline/Bar#a (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1468 + i32.lt_s if - local.get $1 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $1 - i32.const 32 - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub + i32.const 34256 + i32.const 34304 i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $0 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $1 - i32.load - i32.const -4 - i32.and + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $1 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.const 0 - memory.fill - local.get $0 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $super-inline/Bar - block $super-inline/Foo - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable + global.set $~lib/memory/__stack_pointer ) (func $~start (local $0 i32) @@ -1518,98 +1353,264 @@ call $~lib/builtins/abort unreachable ) - (func $super-inline/Foo#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $super-inline/Bar#a (param $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1468 - i32.lt_s - if - i32.const 34256 - i32.const 34304 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34236 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34236 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/switch.release.wat b/tests/compiler/switch.release.wat index 2b5172a5ea..9b967b3838 100644 --- a/tests/compiler/switch.release.wat +++ b/tests/compiler/switch.release.wat @@ -65,539 +65,837 @@ (data $23 (i32.const 1936) "\06\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 \00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - global.get $switch/foo1 - local.tee $0 - if + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - global.get $switch/foo2 - local.tee $0 - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/itcms/__visit - end - i32.const 1520 - call $~lib/rt/itcms/__visit - i32.const 1328 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + local.tee $2 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.store + block $__inlined_func$~lib/string/String#concat$191 + local.get $1 i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + i32.sub + i32.load offset=16 + i32.const -2 i32.and - local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 + local.tee $4 + local.get $3 + i32.add local.tee $0 i32.eqz if - i32.const 0 - i32.const 1392 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1296 + local.set $0 + br $__inlined_func$~lib/string/String#concat$191 end + global.get $~lib/memory/__stack_pointer local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$186 - local.get $1 - i32.load offset=4 - i32.const -4 - i32.and + i32.const 2 + call $~lib/rt/itcms/__new local.tee $0 - i32.eqz - if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34732 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink$186 - end - local.get $1 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else local.get $0 - i32.const 1936 - i32.load - i32.gt_u - if - i32.const 1520 - i32.const 1584 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end + local.get $2 + local.get $3 + memory.copy local.get $0 - i32.const 2 - i32.shl - i32.const 1940 + local.get $3 i32.add - i32.load - i32.const 32 - i32.and + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount + return + end + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $switch/doSwitchNullableString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1104 + call $~lib/string/String.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1136 + call $~lib/string/String.__eq + br_if $case2|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1168 + call $~lib/string/String.__eq + br_if $case3|0 + br $case4|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - global.set $~lib/rt/itcms/visitCount + global.set $~lib/memory/__stack_pointer + i32.const 3 + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $switch/doSwitchString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 1104 + call $~lib/string/String.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1136 + call $~lib/string/String.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1168 + call $~lib/string/String.__eq + br_if $case2|0 + br $case3|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s if - i32.const 0 - i32.const 1664 - i32.const 268 - i32.const 14 + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 1664 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 + local.get $1 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $3 - local.get $4 + local.tee $0 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$76 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$76 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1664 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 + return end - local.get $1 + global.get $~lib/rt/itcms/white local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add + i32.const 20 + i32.sub local.tee $1 - i32.load offset=96 + i32.load offset=4 + i32.const 3 + i32.and i32.eq if local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$186 + local.get $1 i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl + i32.const -4 i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 + local.tee $0 i32.eqz if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34732 + i32.lt_u i32.and - i32.store + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$186 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1936 + i32.load + i32.gt_u + if + i32.const 1520 + i32.const 1584 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1940 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 local.get $3 - i32.const 4 - i32.add + select local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + i32.or + i32.store offset=4 local.get $1 - i32.const 4 - i32.add + local.get $0 + i32.store offset=8 + local.get $0 local.get $1 - i32.load - i32.const -4 + local.get $0 + i32.load offset=4 + i32.const 3 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if + i32.or + i32.store offset=4 + local.get $2 local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store + global.set $~lib/rt/itcms/visitCount end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u + ) + (func $switch/FooClass#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s if - i32.const 0 - i32.const 1664 - i32.const 233 - i32.const 14 + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $2 - i32.add - i32.ne + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $switch/BarClass#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s if - i32.const 0 - i32.const 1664 - i32.const 234 - i32.const 14 + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 + i32.const 0 i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $switch/doSwitchClassInstanceWithOverload (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $0 + i32.const 0 + call $switch/BarClass.__eq + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + call $switch/BarClass#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $switch/BarClass.__eq + br_if $case1|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + call $switch/BarClass#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $switch/BarClass.__eq + br_if $case2|0 + br $case3|0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1664 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $2 + local.tee $3 i32.const 16 i32.lt_u - local.get $5 + local.get $2 i32.const 23 i32.lt_u i32.and @@ -605,648 +903,323 @@ if i32.const 0 i32.const 1664 - i32.const 251 + i32.const 284 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 local.get $1 - i32.const 0 - i32.store offset=4 + i32.load offset=8 + local.set $5 local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 + i32.load offset=4 + local.tee $4 if - local.get $3 - local.get $1 + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 i32.store offset=4 end + local.get $1 local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 + i32.const 4 i32.shl + local.get $3 i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1664 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 + local.tee $1 + i32.load offset=96 + i32.eq if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1664 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1664 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 34736 - i32.const 0 - i32.store - i32.const 36304 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz if local.get $0 + local.get $2 i32.const 2 i32.shl - i32.const 34736 i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 34736 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 34736 - i32.const 36308 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 34736 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34732 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 local.tee $1 - i32.const -4 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz + local.set $3 local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34732 - i32.lt_u + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total local.get $0 i32.load - i32.const -4 + i32.const -2 + local.get $2 + i32.rotl i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34732 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1664 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + i32.store + end + end end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $3 i32.const 4 - i32.shr_u - local.set $1 - else + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store local.get $1 - i32.const 536870910 - i32.lt_u + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 + i32.const 0 + i32.const 1664 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $0 local.get $1 - i32.const 31 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.clz - i32.sub - local.tee $2 + local.get $6 i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $1 - i32.const 16 - i32.lt_u + local.get $4 local.get $2 - i32.const 23 - i32.lt_u + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 i32.and - i32.eqz + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1664 - i32.const 334 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 + local.get $1 + i32.const 4 + i32.add local.get $2 - i32.const 2 - i32.shl i32.add - i32.load offset=4 - i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub local.get $1 - i32.shl - i32.and - local.tee $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u if (result i32) - local.get $0 - local.get $1 - i32.ctz local.get $2 i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.shr_u else - local.get $0 - i32.load - i32.const -1 + i32.const 31 + i32.const 1073741820 local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1346,8 +1319,6 @@ local.tee $2 i32.eqz if - memory.size - local.tee $2 local.get $5 i32.const 256 i32.ge_u @@ -1375,7 +1346,8 @@ i32.const 4 local.get $4 i32.load offset=1568 - local.get $2 + memory.size + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -1389,7 +1361,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $2 + local.get $3 local.get $2 local.get $3 i32.gt_s @@ -1518,248 +1492,83 @@ local.get $1 i32.store offset=12 local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - local.get $0 - memory.fill - local.get $1 - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $switch/BarClass - block $switch/FooClass - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - return - end - unreachable - ) - (func $~start - call $start:switch - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $switch/BarClass + block $switch/FooClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $switch/FooClass $switch/BarClass $invalid + end + return + end + return + end + return end - end - end - block $__inlined_func$~lib/util/string/compareImpl$76 - loop $while-continue|1 local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$76 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end + i32.load + call $~lib/rt/itcms/__visit + return end - i32.const 0 - local.set $3 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 + unreachable ) - (func $switch/doSwitchString (param $0 i32) (result i32) + (func $switch/doSwitchClassMember (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1774,171 +1583,102 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - block $case3|0 - block $case2|0 - block $case1|0 + i32.store + block $case2|0 + block $case1|0 + local.get $0 + i32.load + local.tee $0 + i32.const 1 + i32.ne + if local.get $0 - i32.const 1104 - call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1136 - call $~lib/string/String.__eq - br_if $case1|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1168 - call $~lib/string/String.__eq - br_if $case2|0 - br $case3|0 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + i32.const 2 + i32.eq + br_if $case1|0 + br $case2|0 end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 2 + i32.const 1 return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 3 + i32.const 2 return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 4 + i32.const 3 ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $switch/doSwitchClassInstance (param $0 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.tee $2 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - block $__inlined_func$~lib/string/String#concat$191 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $4 - local.get $3 - i32.add - local.tee $0 - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 1964 + i32.lt_s + if + i32.const 34752 + i32.const 34800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $case2|0 + block $case1|0 + global.get $switch/foo1 + local.get $0 + i32.ne if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1296 - local.set $0 - br $__inlined_func$~lib/string/String#concat$191 + local.get $0 + global.get $switch/foo2 + i32.eq + br_if $case1|0 + br $case2|0 end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $2 - local.get $3 - memory.copy - local.get $0 - local.get $3 - i32.add - local.get $1 - local.get $4 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 1 + return end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 2 return end - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 ) - (func $switch/doSwitchNullableString (param $0 i32) (result i32) + (func $switch/BarClass.__eq (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1953,374 +1693,689 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end global.get $~lib/memory/__stack_pointer local.get $0 i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + i32.eq global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=4 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $0 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1104 - call $~lib/string/String.__eq - br_if $case1|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1136 - call $~lib/string/String.__eq - br_if $case2|0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 1168 - call $~lib/string/String.__eq - br_if $case3|0 - br $case4|0 - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer i32.const 2 - return + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 - return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 4 ) - (func $switch/FooClass#constructor (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new + memory.size local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $switch/doSwitchClassMember (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - i32.const 1 + i32.le_s + if (result i32) i32.const 1 - call $~lib/builtins/abort + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if unreachable end - global.get $~lib/memory/__stack_pointer + i32.const 34736 i32.const 0 i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 36304 + i32.const 0 i32.store - block $case2|0 - block $case1|0 + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if local.get $0 - i32.load - local.tee $0 - i32.const 1 - i32.ne - if - local.get $0 - i32.const 2 - i32.eq - br_if $case1|0 - br $case2|0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 2 + i32.shl + i32.const 34736 i32.add - global.set $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34736 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 i32.const 1 - return + i32.add + local.set $0 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 + i32.const 34736 + i32.const 36308 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34736 + global.set $~lib/rt/tlsf/ROOT ) - (func $switch/BarClass.__eq (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1664 + i32.const 382 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 local.get $1 - i32.eq + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 if - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1664 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1664 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store local.get $1 - i32.load - i32.eq - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $switch/BarClass#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.and + local.get $3 i32.const 8 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 + i32.const 1 + i32.or + i32.or i32.store - global.get $~lib/memory/__stack_pointer local.get $1 + i32.const 0 i32.store offset=4 local.get $1 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 + i32.store offset=8 local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $switch/doSwitchClassInstanceWithOverload (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s + global.get $switch/foo1 + local.tee $0 if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - block $case3|0 + global.get $switch/foo2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1520 + call $~lib/rt/itcms/__visit + i32.const 1328 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~start + call $start:switch + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 block $case2|0 block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34732 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34732 + i32.lt_u + if local.get $0 i32.const 0 - call $switch/BarClass.__eq - i32.eqz + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34732 + i32.ge_u if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 1 - call $switch/BarClass#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - local.get $1 - call $switch/BarClass.__eq - br_if $case1|0 - global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + local.set $2 local.get $0 - i32.store offset=4 - i32.const 2 - call $switch/BarClass#constructor - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 + i32.const 15 + i32.and + i32.const 1 local.get $0 - local.get $1 - call $switch/BarClass.__eq - br_if $case2|0 - br $case3|0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1664 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 + i32.const 10 return end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 + i32.const 0 ) (func $start:switch (local $0 i32) @@ -2912,58 +2967,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $switch/doSwitchClassInstance (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1964 - i32.lt_s - if - i32.const 34752 - i32.const 34800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $case2|0 - block $case1|0 - global.get $switch/foo1 - local.get $0 - i32.ne - if - local.get $0 - global.get $switch/foo2 - i32.eq - br_if $case1|0 - br $case2|0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 3 - ) ) diff --git a/tests/compiler/templateliteral.release.wat b/tests/compiler/templateliteral.release.wat index 9256be15f6..e99c91217f 100644 --- a/tests/compiler/templateliteral.release.wat +++ b/tests/compiler/templateliteral.release.wat @@ -3,14 +3,14 @@ (type $1 (func (param i32) (result i32))) (type $2 (func)) (type $3 (func (param i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param f64) (result i32))) + (type $4 (func (param i32 i32 i32))) + (type $5 (func (param f64) (result i32))) + (type $6 (func (param i32 i32))) (type $7 (func (param i32 i32 i32 i32))) (type $8 (func (param i32 i32 i64))) - (type $9 (func (result i32))) + (type $9 (func (param i32 i32 i32) (result i32))) (type $10 (func (param i64 i64 i32 i64 i32) (result i32))) - (type $11 (func (param i32 i32 i32) (result i32))) + (type $11 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -140,1667 +140,1670 @@ (data $62 (i32.const 5872) "\07\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00\04A\00\00 ") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1408 - call $~lib/rt/itcms/__visit - i32.const 1216 - call $~lib/rt/itcms/__visit - i32.const 2464 - call $~lib/rt/itcms/__visit - i32.const 3520 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$91 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$91 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/itcms/Object#makeGray (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $1 + i32.eqz + if + return + end local.get $0 - global.get $~lib/rt/itcms/iter - i32.eq + i32.eqz if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter + i32.const 0 + i32.const 1280 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 - i32.const -4 + i32.const 3 i32.and - local.tee $1 + local.tee $3 + global.get $~lib/rt/itcms/white i32.eqz + i32.eq if local.get $0 - i32.load offset=8 - i32.eqz - local.get $0 - i32.const 38672 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray end - br $__inlined_func$~lib/rt/itcms/Object#unlink$165 - end - local.get $0 - i32.load offset=8 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable end - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $1 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 2 - i32.le_u - if (result i32) + ) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 i32.const 1 - else - local.get $1 - i32.const 5872 - i32.load - i32.gt_u - if - i32.const 1408 - i32.const 1472 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - i32.const 5876 - i32.add - i32.load - i32.const 32 - i32.and + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=8 - local.get $1 - local.get $0 + i32.store local.get $1 - i32.load offset=4 - i32.const 3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 i32.and - i32.or - i32.store offset=4 + local.tee $3 local.get $2 - local.get $0 - i32.store offset=8 - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 + i32.add + local.tee $4 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1184 return end - global.get $~lib/rt/itcms/white + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end + local.get $2 + memory.copy + local.get $2 + local.get $4 + i32.add + local.get $1 + local.get $3 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s if - i32.const 0 - i32.const 1552 - i32.const 268 - i32.const 14 + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32$75 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2032 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32$75 + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1552 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else + local.get $0 + i32.sub + local.get $0 + local.get $0 i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u + i32.shr_u + i32.const 1 + i32.shl + local.tee $1 select local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 100 + i32.lt_u + if (result i32) + local.get $3 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $3 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $3 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $3 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $3 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $3 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $2 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $1 + i32.add local.get $3 - local.get $4 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor + i32.add + global.set $~lib/memory/__stack_pointer end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and + local.get $0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 i32.eqz if - i32.const 0 - i32.const 1552 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 - local.tee $4 + i32.const 3 + i32.and + i32.eq if - local.get $4 - local.get $5 - i32.store offset=8 + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - local.get $5 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s if - local.get $5 - local.get $4 - i32.store offset=4 + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 2 - i32.shl + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + local.get $0 + local.get $1 + call $~lib/util/string/joinStringArray + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1552 - i32.const 203 - i32.const 14 + i32.const 1216 + i32.const 1280 + i32.const 261 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i32.const 1 + i32.shl + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$70 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.set $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1216 + i32.const 1552 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $2 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $2 + i32.const 19 i32.add - local.get $1 - i32.load - i32.const -4 + i32.const -16 i32.and - i32.add - local.tee $4 - i32.load - local.set $2 + i32.const 4 + i32.sub end - local.get $3 - i32.const 2 - i32.and + local.tee $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz if - local.get $1 + local.get $5 + i32.const 256 + i32.ge_u + if (result i32) + local.get $5 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $5 + i32.const 1 + i32.const 27 + local.get $5 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $5 + end + else + local.get $5 + end + i32.const 4 + local.get $4 + i32.load offset=1568 + memory.size + local.tee $2 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $4 + local.get $2 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $4 + local.get $5 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 i32.const 1552 - i32.const 221 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store end - local.get $4 + local.get $5 local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 + i32.load i32.const -4 i32.and - local.tee $2 - i32.const 12 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1552 - i32.const 233 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $1 - i32.const 4 - i32.add local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + i32.load + local.set $6 + local.get $5 + i32.const 4 i32.add - i32.ne + i32.const 15 + i32.and if i32.const 0 i32.const 1552 - i32.const 234 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.const 4 + local.get $6 + i32.const -4 + i32.and + local.get $5 i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 + local.tee $3 + i32.const 16 + i32.ge_u + if local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 + local.get $5 + local.get $6 + i32.const 2 + i32.and + i32.or + i32.store local.get $2 + i32.const 4 + i32.add + local.get $5 + i32.add + local.tee $5 local.get $3 i32.const 4 i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if + i32.const 1 + i32.or + i32.store + local.get $4 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $2 + local.get $6 + i32.const -2 + i32.and + i32.store + local.get $2 + i32.const 4 + i32.add + local.get $2 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $3 local.get $3 - local.get $1 - i32.store offset=4 + i32.load + i32.const -3 + i32.and + i32.store end - local.get $0 - local.get $5 - i32.const 4 - i32.shl local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 + i32.store offset=12 + local.get $2 local.get $0 - i32.load offset=4 - i32.const 1 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 local.get $2 - i32.shl + local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1552 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1552 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1552 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - end + local.get $3 + i32.store offset=8 + local.get $3 local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or + i32.load offset=4 + i32.const 3 + i32.and i32.or - i32.store - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 - i32.const 0 + local.get $2 i32.store offset=8 - local.get $1 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and i32.const 4 i32.add - local.get $3 i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 local.get $0 + memory.fill local.get $1 - call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initialize - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 - i32.const 0 - i32.le_s - if (result i32) - i32.const 1 - local.get $1 - i32.sub - memory.grow - i32.const 0 + (func $templateliteral/Ref#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 5904 i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 38672 - i32.const 0 - i32.store - i32.const 40240 - i32.const 0 - i32.store - loop $for-loop|0 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 23 - i32.lt_u + i32.store offset=4 + local.get $0 + i32.load + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5328 + local.get $0 + call $~lib/string/String#concat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/number/F64#toString (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 3776 + local.set $1 + block $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + f64.const 0 + f64.eq + br_if $~lib/util/number/dtoa_impl|inlined.0 + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.ne if + i32.const 3808 + local.set $1 local.get $0 - i32.const 2 - i32.shl - i32.const 38672 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 + local.get $0 + f64.ne + br_if $~lib/util/number/dtoa_impl|inlined.0 + i32.const 3840 + i32.const 3888 + local.get $0 + f64.const 0 + f64.lt + select + local.set $1 + br $~lib/util/number/dtoa_impl|inlined.0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 3920 + local.get $2 + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.lt_u - if - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 38672 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end - end local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 i32.const 1 + i32.shl i32.add - local.set $0 - br $for-loop|0 + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - i32.const 38672 - i32.const 40244 - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - i32.const 38672 - global.set $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 2044 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 i32.load offset=4 - i32.const -4 + i32.const -2 + local.get $3 + i32.rotl i32.and - i32.eq + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 38672 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 38672 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 38672 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1552 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end + i32.store end - i32.const 10 - return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state end - i32.const 0 ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 256 - i32.lt_u + i32.eqz if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - local.get $1 - i32.const 536870910 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 + i32.const 0 + i32.const 1552 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u + i32.load + local.tee $3 + i32.const 1 i32.and i32.eqz if i32.const 0 i32.const 1552 - i32.const 334 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $2 - i32.const 2 - i32.shl + local.get $1 + i32.const 4 i32.add - i32.load offset=4 - i32.const -1 local.get $1 - i32.shl + i32.load + i32.const -4 i32.and - local.tee $1 - if (result i32) + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.ctz + local.get $3 + i32.const 4 + i32.add local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 i32.const 4 - i32.shl i32.add - i32.const 2 - i32.shl + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - i32.load offset=96 - else - local.get $0 + local.tee $4 i32.load - i32.const -1 - local.get $2 + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 i32.const 1 - i32.add - i32.shl i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1216 - i32.const 1280 - i32.const 261 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$70 - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i32.const 1 - i32.shl - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt$70 - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $4 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u - if - i32.const 1216 - i32.const 1552 - i32.const 461 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - memory.size - local.tee $2 - local.get $5 - i32.const 256 - i32.ge_u - if (result i32) - local.get $5 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1 - i32.const 27 - local.get $5 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $5 - end - else - local.get $5 - end - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $2 - i32.const 16 - i32.shl - memory.size - i64.extend_i32_s - i64.const 16 - i64.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - local.get $5 - call $~lib/rt/tlsf/searchBlock - local.tee $2 i32.eqz if i32.const 0 i32.const 1552 - i32.const 499 + i32.const 221 i32.const 16 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store end - local.get $5 + local.get $4 local.get $2 - i32.load + i32.const 2 + i32.or + i32.store + local.get $3 i32.const -4 i32.and - i32.gt_u + local.tee $2 + i32.const 12 + i32.lt_u if i32.const 0 i32.const 1552 - i32.const 501 + i32.const 233 i32.const 14 call $~lib/builtins/abort unreachable end local.get $4 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - i32.load - local.set $6 - local.get $5 + local.get $1 i32.const 4 i32.add - i32.const 15 - i32.and + local.get $2 + i32.add + i32.ne if i32.const 0 i32.const 1552 - i32.const 361 + i32.const 234 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const -4 - i32.and - local.get $5 + local.get $4 + i32.const 4 i32.sub - local.tee $3 - i32.const 16 - i32.ge_u - if - local.get $2 - local.get $5 - local.get $6 - i32.const 2 - i32.and - i32.or - i32.store + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) local.get $2 i32.const 4 - i32.add - local.get $5 - i32.add - local.tee $5 - local.get $3 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $5 - call $~lib/rt/tlsf/insertBlock + i32.shr_u else + i32.const 31 + i32.const 1073741820 local.get $2 - local.get $6 - i32.const -2 - i32.and - i32.store - local.get $2 - i32.const 4 - i32.add local.get $2 - i32.load - i32.const -4 - i32.and - i32.add + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 local.get $3 - i32.load - i32.const -3 - i32.and - i32.store + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $3 + local.get $5 + i32.const 4 + i32.shl local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 local.get $1 - global.get $~lib/rt/itcms/white - i32.or + i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=8 local.get $3 - local.get $2 - local.get $3 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 i32.const 4 + i32.shl + local.get $2 i32.add + i32.const 2 + i32.shl i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl i32.add - local.tee $1 - i32.const 0 + local.tee $0 local.get $0 - memory.fill - local.get $1 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 295 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and + global.get $~lib/rt/itcms/iter i32.eq if local.get $0 - i32.const 20 - i32.sub - local.tee $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$165 + local.get $0 i32.load offset=4 - i32.const 3 + i32.const -4 i32.and - local.tee $3 - global.get $~lib/rt/itcms/white + local.tee $1 i32.eqz - i32.eq if local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - local.get $3 - i32.const 3 - i32.eq + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 38672 + i32.lt_u i32.and + i32.eqz if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + i32.const 0 + i32.const 1280 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink$165 end - end - ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 - local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 2044 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 2044 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.const 0 + i32.const 1280 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 + local.get $1 local.get $2 - i32.const 2 - i32.sub - local.tee $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) i32.const 1 - i32.shl - i32.add + else + local.get $1 + i32.const 5872 + i32.load + i32.gt_u + if + i32.const 1408 + i32.const 1472 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 100 - i32.rem_u i32.const 2 i32.shl - i32.const 2044 + i32.const 5876 i32.add i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 + i32.const 32 + i32.and end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 local.get $1 - i32.const 10 - i32.ge_u - if + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $templateliteral/RecursiveObject + block $templateliteral/Ref + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + return + end + return + end local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 2044 - i32.add i32.load - i32.store - else + call $~lib/rt/itcms/__visit local.get $0 - local.get $2 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $templateliteral/Ref#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 i32.const 1 - i32.sub i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) - (local $1 i32) + (func $templateliteral/RecursiveObject#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1815,633 +1818,843 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 i32.store - block $__inlined_func$~lib/util/number/itoa32$75 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2032 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32$75 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 end - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else local.get $0 - i32.const 31 - i32.shr_u + i32.load + i32.const -1 + local.get $2 i32.const 1 + i32.add i32.shl + i32.and local.tee $1 - select - local.tee $3 - i32.const 100000 - i32.lt_u if (result i32) - local.get $3 - i32.const 100 - i32.lt_u - if (result i32) - local.get $3 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $3 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $3 - i32.const 1000 - i32.ge_u - i32.add + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - local.get $3 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $3 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $3 - i32.const 100000000 - i32.ge_u - i32.add - end + i32.const 0 end - local.tee $2 + end + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) i32.const 1 - i32.shl local.get $1 - i32.add - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 38672 + i32.const 0 + i32.store + i32.const 40240 + i32.const 0 + i32.store + loop $for-loop|0 local.get $0 - local.get $1 - i32.add - local.get $3 - local.get $2 - call $~lib/util/number/utoa32_dec_lut - local.get $1 + i32.const 23 + i32.lt_u if local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) - local.get $1 - local.get $0 - i64.sub - local.set $10 - i64.const 1 - i32.const 0 - local.get $2 - i32.sub - local.tee $11 + i32.const 2 + i32.shl + i32.const 38672 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 38672 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 38672 + i32.const 40244 + memory.size i64.extend_i32_s - local.tee $0 + i64.const 16 i64.shl - local.tee $7 - i64.const 1 - i64.sub - local.tee $12 + call $~lib/rt/tlsf/addMemory + i32.const 38672 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 local.get $1 - i64.and - local.set $9 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1552 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 local.get $0 - i64.shr_u - i32.wrap_i64 - local.tee $5 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 100 - i32.lt_u - if (result i32) - local.get $5 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $5 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 local.get $5 - i32.const 1000 - i32.ge_u - i32.add + local.set $1 end else - local.get $5 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $5 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $5 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $5 - i32.const 100000000 - i32.ge_u - i32.add + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end end - local.set $8 + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 1216 + call $~lib/rt/itcms/__visit + i32.const 2464 + call $~lib/rt/itcms/__visit + i32.const 3520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 loop $while-continue|0 - local.get $8 - i32.const 0 - i32.gt_s + local.get $0 + local.get $1 + i32.ne if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $8 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $5 - i32.const 1000000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100000 - i32.div_u - local.set $6 - local.get $5 - i32.const 100000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 1000 - i32.div_u - local.set $6 - local.get $5 - i32.const 1000 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - i32.const 10 - i32.div_u - local.set $6 - local.get $5 - i32.const 10 - i32.rem_u - local.set $5 - br $break|1 - end - local.get $5 - local.set $6 - i32.const 0 - local.set $5 - br $break|1 - end - i32.const 0 - local.set $6 - end - local.get $4 - local.get $6 - i32.or - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 3920 - i32.add - local.get $6 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - end - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.get $5 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - local.tee $1 - i64.shl - local.get $9 - i64.add - local.tee $0 - i64.ge_u + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne if - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $8 - i32.const 2 - i32.shl - i32.const 4848 - i32.add - i64.load32_u - local.get $1 - i64.shl - local.set $7 - local.get $4 - i32.const 1 - i32.shl - i32.const 3918 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|3 - local.get $0 - local.get $10 - i64.lt_u - local.get $3 - local.get $0 - i64.sub - local.get $7 - i64.ge_u - i32.and - if (result i32) - local.get $10 - local.get $0 - local.get $7 - i64.add - local.tee $1 - i64.gt_u - local.get $10 - local.get $0 - i64.sub - local.get $1 - local.get $10 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $0 - local.get $7 - i64.add - local.set $0 - br $while-continue|3 - end - end - local.get $2 - local.get $6 - i32.store16 - local.get $4 - return + i32.const 0 + i32.const 1280 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - br $while-continue|0 - end - end - loop $while-continue|4 - local.get $3 - i64.const 10 - i64.mul - local.set $3 - local.get $9 - i64.const 10 - i64.mul - local.tee $1 - local.get $11 - i64.extend_i32_s - i64.shr_u - local.tee $0 - local.get $4 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $4 - local.tee $2 - i32.const 1 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.shl - i32.const 3920 + local.get $0 + i32.const 20 i32.add + call $~lib/rt/__visit_members local.get $0 - i32.wrap_i64 - i32.const 65535 + i32.load offset=4 + i32.const -4 i32.and - i32.const 48 - i32.add - i32.store16 + local.set $0 + br $while-continue|0 end - local.get $8 + end + ) + (func $templateliteral/RecursiveObject#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 i32.const 1 - i32.sub - local.set $8 - local.get $1 - local.get $12 - i64.and - local.tee $9 - local.get $3 - i64.ge_u - br_if $while-continue|4 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/util/number/_K - local.get $8 - i32.add - global.set $~lib/util/number/_K - local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $8 - i32.sub - i32.const 2 - i32.shl - i32.const 4848 - i32.add - i64.load32_u - i64.mul - local.set $1 - local.get $4 - i32.const 1 - i32.shl - i32.const 3918 - i32.add - local.tee $2 - i32.load16_u - local.set $6 - loop $while-continue|6 - local.get $1 - local.get $9 - i64.gt_u - local.get $3 - local.get $9 - i64.sub - local.get $7 - i64.ge_u - i32.and - if (result i32) - local.get $1 - local.get $7 - local.get $9 - i64.add - local.tee $0 - i64.gt_u - local.get $1 - local.get $9 - i64.sub - local.get $0 - local.get $1 - i64.sub - i64.gt_u - i32.or - else - i32.const 0 - end - if - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $7 - local.get $9 - i64.add - local.set $9 - br $while-continue|6 - end - end - local.get $2 - local.get $6 - i32.store16 - local.get $4 - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $2 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $1 i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 i32.store - local.get $1 - i32.const 2 + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add + global.set $~lib/memory/__stack_pointer return end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 - i32.le_s - i32.and - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 + call $templateliteral/RecursiveObject#toString + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + i32.const 5824 + local.get $0 + i32.store + i32.const 5824 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + i32.const 5832 + local.get $1 + i32.store + i32.const 5824 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + i32.const 5824 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:templateliteral + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + if + i32.const 38704 + i32.const 38752 i32.const 1 - i32.shl + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - i32.const 3145774 + global.set $~lib/memory/__stack_pointer + i32.const 1184 + return + end + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 i32.store - local.get $3 - i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - else - local.get $3 - i32.const 21 - i32.le_s + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 1184 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 local.get $3 - i32.const 0 i32.gt_s - i32.and - if (result i32) + if + global.get $~lib/memory/__stack_pointer local.get $0 local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 i32.shl - memory.copy - local.get $0 - i32.const 46 - i32.store16 - local.get $1 - i32.const 1 i32.add - else - local.get $3 - i32.const 0 - i32.le_s - local.get $3 - i32.const -6 - i32.gt_s - i32.and - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 + i32.load + local.tee $5 + i32.store offset=4 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $2 + local.get $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $2 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1180 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + local.get $4 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + i32.const 1 + i32.shl + memory.copy + local.get $3 + local.get $6 + i32.add + local.set $3 + end + local.get $1 + if + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 1184 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $3 + i32.add + local.set $3 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.eqz + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + memory.copy + local.get $0 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 0 + i32.le_s + local.get $3 + i32.const -6 + i32.gt_s + i32.and + if (result i32) + local.get $0 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 i32.shl i32.add local.get $0 @@ -2667,1076 +2880,1122 @@ end end ) - (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) (local $10 i64) - (local $11 i64) + (local $11 i32) (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $0 - f64.const 0 - f64.lt - local.tee $2 - if (result f64) - i32.const 3920 - i32.const 45 - i32.store16 - local.get $0 - f64.neg - else - local.get $0 - end - i64.reinterpret_f64 - local.tee $1 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $4 - i32.const 1 - local.get $4 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub local.get $1 - i64.const 4503599627370495 - i64.and - local.get $4 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - i64.add - local.tee $1 - i64.const 1 - i64.shl + local.get $0 + i64.sub + local.set $9 i64.const 1 - i64.add - local.tee $3 - i64.clz - i32.wrap_i64 - local.tee $9 + i32.const 0 + local.get $2 i32.sub - local.set $4 - local.get $3 - local.get $9 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $1 - local.get $1 - i64.const 4503599627370496 - i64.eq - i32.const 1 - i32.add - local.tee $9 + local.tee $11 i64.extend_i32_s + local.tee $0 i64.shl + local.tee $10 i64.const 1 i64.sub - local.get $8 - local.get $9 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_sat_f64_s - local.tee $4 - local.get $4 - f64.convert_i32_s - local.get $0 - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $8 - i32.sub - global.set $~lib/util/number/_K - local.get $8 - i32.const 3976 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 4672 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - local.get $1 + local.tee $12 local.get $1 - i64.clz - i64.shl - local.tee $1 - i64.const 4294967295 - i64.and - local.set $5 - global.get $~lib/util/number/_frc_pow - local.tee $10 - i64.const 4294967295 i64.and - local.tee $11 + local.set $8 local.get $1 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $5 - local.get $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $6 - global.get $~lib/util/number/_frc_plus - local.tee $3 - i64.const 4294967295 - i64.and - local.set $12 - local.get $3 - i64.const 32 - i64.shr_u - local.tee $3 - local.get $11 - i64.mul - local.get $11 - local.get $12 - i64.mul - i64.const 32 + local.get $0 i64.shr_u - i64.add + i32.wrap_i64 + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end local.set $7 - global.get $~lib/util/number/_frc_minus - local.tee $13 - i64.const 4294967295 - i64.and - local.set $14 - local.get $13 - i64.const 32 - i64.shr_u - local.tee $13 - local.get $11 - i64.mul - local.get $11 - local.get $14 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $2 - i32.const 1 - i32.shl - i32.const 3920 - i32.add - local.get $1 - local.get $10 - i64.const 32 - i64.shr_u - local.tee $1 - i64.mul - local.get $6 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $5 - i64.mul - local.get $6 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $3 - i64.mul - local.get $7 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $12 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $3 - global.get $~lib/util/number/_exp_pow - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $3 - local.get $1 - local.get $13 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.get $1 - local.get $14 - i64.mul - local.get $11 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $2 - call $~lib/util/number/genDigits - local.get $2 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $2 - i32.add - ) - (func $~lib/number/F64#toString (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 3776 - local.set $1 - block $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - f64.const 0 - f64.eq - br_if $~lib/util/number/dtoa_impl|inlined.0 - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.ne - if - i32.const 3808 - local.set $1 - local.get $0 - local.get $0 - f64.ne - br_if $~lib/util/number/dtoa_impl|inlined.0 - i32.const 3840 - i32.const 3888 - local.get $0 - f64.const 0 - f64.lt - select - local.set $1 - br $~lib/util/number/dtoa_impl|inlined.0 - end - local.get $0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 3920 - local.get $2 - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $start:templateliteral - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - memory.size - i32.const 16 - i32.shl - i32.const 38672 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1332 - i32.const 1328 - i32.store - i32.const 1336 - i32.const 1328 - i32.store - i32.const 1328 - global.set $~lib/rt/itcms/pinSpace - i32.const 1364 - i32.const 1360 - i32.store - i32.const 1368 - i32.const 1360 - i32.store - i32.const 1360 - global.set $~lib/rt/itcms/toSpace - i32.const 1508 - i32.const 1504 - i32.store - i32.const 1512 - i32.const 1504 - i32.store - i32.const 1504 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer + loop $while-continue|0 + local.get $7 i32.const 0 - i32.const 28 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=8 - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=16 - i32.const 1056 - i32.const 1088 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz + i32.gt_s if - i32.const 0 - i32.const 1120 - i32.const 5 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 1744 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=16 - i32.const 1748 - i32.const 1056 - i32.store - i32.const 1744 - i32.const 1056 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 1744 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=16 - i32.const 1756 - i32.const 1088 - i32.store - i32.const 1744 - i32.const 1088 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 1744 - i32.store offset=12 - i32.const 1744 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 1792 - call $~lib/string/String.__eq - i32.eqz + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $2 + i32.const 1000000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 100000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 10000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000 + i32.div_u + local.set $5 + local.get $2 + i32.const 100000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000 + i32.div_u + local.set $5 + local.get $2 + i32.const 10000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000 + i32.div_u + local.set $5 + local.get $2 + i32.const 1000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100 + i32.div_u + local.set $5 + local.get $2 + i32.const 100 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10 + i32.div_u + local.set $5 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $5 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $5 + end + local.get $4 + local.get $5 + i32.or + if + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.const 1 + i32.shl + i32.const 3920 + i32.add + local.get $5 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $3 + local.get $2 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + local.tee $1 + i64.shl + local.get $8 + i64.add + local.tee $0 + i64.ge_u + if + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $7 + i32.const 2 + i32.shl + i32.const 4848 + i32.add + i64.load32_u + local.get $1 + i64.shl + local.set $1 + local.get $4 + i32.const 1 + i32.shl + i32.const 3918 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u + local.get $3 + local.get $0 + i64.sub + local.get $1 + i64.ge_u + i32.and + if (result i32) + local.get $9 + local.get $0 + local.get $1 + i64.add + local.tee $8 + i64.gt_u + local.get $9 + local.get $0 + i64.sub + local.get $8 + local.get $9 + i64.sub + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $0 + local.get $1 + i64.add + local.set $0 + br $while-continue|3 + end + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + return + end + br $while-continue|0 + end + end + loop $while-continue|4 + local.get $3 + i64.const 10 + i64.mul + local.set $3 + local.get $8 + i64.const 10 + i64.mul + local.tee $0 + local.get $11 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $4 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne if - i32.const 0 - i32.const 1120 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + local.tee $2 + i32.const 1 + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.shl + i32.const 3920 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 end - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - i32.const 2 - call $~lib/number/I32#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 3648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 14 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/number/I32#toString - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $~lib/number/I32#toString - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 3680 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 3684 - local.get $0 - i32.store - i32.const 3680 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3680 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 3692 - local.get $1 - i32.store - i32.const 3680 - local.get $1 + local.get $7 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 3680 - i32.store offset=4 - i32.const 3680 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer + i32.sub + local.set $7 local.get $0 - i32.store + local.get $12 + i64.and + local.tee $8 + local.get $3 + i64.ge_u + br_if $while-continue|4 + end + global.get $~lib/util/number/_K + local.get $7 + i32.add + global.set $~lib/util/number/_K + local.get $9 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 4848 + i32.add + i64.load32_u + i64.mul + local.set $0 + local.get $4 + i32.const 1 + i32.shl + i32.const 3918 + i32.add + local.tee $2 + i32.load16_u + local.set $7 + loop $while-continue|6 local.get $0 - i32.const 3728 - call $~lib/string/String.__eq - i32.eqz - if + local.get $8 + i64.gt_u + local.get $3 + local.get $8 + i64.sub + local.get $10 + i64.ge_u + i32.and + if (result i32) + local.get $0 + local.get $8 + local.get $10 + i64.add + local.tee $1 + i64.gt_u + local.get $0 + local.get $8 + i64.sub + local.get $1 + local.get $0 + i64.sub + i64.gt_u + i32.or + else i32.const 0 - i32.const 1120 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - f64.const 1 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 4912 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $7 + i32.const 1 + i32.sub + local.set $7 + local.get $8 + local.get $10 + i64.add + local.set $8 + br $while-continue|6 end - f64.const 1 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - f64.const 2 - call $~lib/number/F64#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $0 - local.get $1 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer + end + local.get $2 + local.get $7 + i32.store16 + local.get $4 + ) + (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) + (local $1 i64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + local.get $0 + f64.const 0 + f64.lt + local.tee $2 + if (result f64) + i32.const 3920 + i32.const 45 + i32.store16 local.get $0 - i32.store + f64.neg + else local.get $0 - i32.const 4944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - f64.const 1 - call $~lib/number/F64#toString - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - f64.const 2 - call $~lib/number/F64#toString - local.tee $1 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 4980 - local.get $0 - i32.store - i32.const 4976 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - i32.const 4988 - local.get $1 - i32.store - i32.const 4976 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - i32.const 4976 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 5024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 31 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - i32.const 5104 - local.get $0 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=8 - i32.const 5104 - i32.const 1088 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.const 5200 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=8 - i32.const 1088 - i32.const 5200 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5264 - call $~lib/string/String.__eq - i32.eqz - if + end + i64.reinterpret_f64 + local.tee $1 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $4 + i32.const 1 + local.get $4 + select + i32.const 1075 + i32.sub + local.tee $8 + i32.const 1 + i32.sub + local.get $1 + i64.const 4503599627370495 + i64.and + local.get $4 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.tee $1 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $3 + i64.clz + i32.wrap_i64 + local.tee $9 + i32.sub + local.set $4 + local.get $3 + local.get $9 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $1 + local.get $1 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $9 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $8 + local.get $9 + i32.sub + local.get $4 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $4 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $0 + i32.trunc_sat_f64_s + local.tee $4 + local.get $4 + f64.convert_i32_s + local.get $0 + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + local.tee $8 + i32.sub + global.set $~lib/util/number/_K + local.get $8 + i32.const 3976 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $4 + i32.const 1 + i32.shl + i32.const 4672 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + local.get $1 + local.get $1 + i64.clz + i64.shl + local.tee $1 + i64.const 4294967295 + i64.and + local.set $5 + global.get $~lib/util/number/_frc_pow + local.tee $10 + i64.const 4294967295 + i64.and + local.tee $11 + local.get $1 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $5 + local.get $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $6 + global.get $~lib/util/number/_frc_plus + local.tee $3 + i64.const 4294967295 + i64.and + local.set $12 + local.get $3 + i64.const 32 + i64.shr_u + local.tee $3 + local.get $11 + i64.mul + local.get $11 + local.get $12 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $7 + global.get $~lib/util/number/_frc_minus + local.tee $13 + i64.const 4294967295 + i64.and + local.set $14 + local.get $13 + i64.const 32 + i64.shr_u + local.tee $13 + local.get $11 + i64.mul + local.get $11 + local.get $14 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $2 + i32.const 1 + i32.shl + i32.const 3920 + i32.add + local.get $1 + local.get $10 + i64.const 32 + i64.shr_u + local.tee $1 + i64.mul + local.get $6 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $5 + i64.mul + local.get $6 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $3 + i64.mul + local.get $7 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $12 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $3 + global.get $~lib/util/number/_exp_pow + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $3 + local.get $1 + local.get $13 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.get $1 + local.get $14 + i64.mul + local.get $11 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $2 + call $~lib/util/number/genDigits + local.get $2 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $2 + i32.add + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end i32.const 0 - i32.const 1120 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 38672 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=12 - local.get $0 - i32.const 1088 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 5296 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 0 - i32.const 1120 - i32.const 37 + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.and + i32.ne + if + i32.const 0 + i32.const 1280 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 38672 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 38672 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1552 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.sub - global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $start:templateliteral + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + memory.size + i32.const 16 + i32.shl + i32.const 38672 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/pinSpace + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/toSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 5904 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 32 + i32.const 28 memory.fill global.get $~lib/memory/__stack_pointer - i32.const 1 - call $templateliteral/Ref#constructor - local.tee $2 + i32.const 1056 i32.store global.get $~lib/memory/__stack_pointer - i32.const 2 - call $templateliteral/Ref#constructor - local.tee $0 + i32.const 1088 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 - call $templateliteral/Ref#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 1056 i32.store offset=8 - local.get $1 - i32.const 5360 + i32.const 1056 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 51 + i32.const 4 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $2 - call $templateliteral/Ref#toString - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 1056 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - local.get $0 - call $templateliteral/Ref#toString - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 1088 i32.store offset=16 - local.get $1 - local.get $3 + i32.const 1056 + i32.const 1088 call $~lib/string/String#concat - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 - local.get $1 - i32.const 5392 + local.get $0 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 52 + i32.const 5 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 + i32.const 1056 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $2 - call $templateliteral/Ref#toString - local.tee $1 + i32.const 1088 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - call $templateliteral/Ref#toString - local.tee $0 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 1744 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + i32.const 1056 i32.store offset=16 - i32.const 5444 - local.get $1 + i32.const 1748 + i32.const 1056 i32.store - i32.const 5440 - local.get $1 + i32.const 1744 + i32.const 1056 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 1744 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 1088 i32.store offset=16 - i32.const 5452 - local.get $0 + i32.const 1756 + i32.const 1088 i32.store - i32.const 5440 - local.get $0 + i32.const 1744 + i32.const 1088 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5440 + i32.const 1744 i32.store offset=12 - i32.const 5440 + i32.const 1744 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 local.get $0 - i32.const 5488 + i32.const 1792 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 53 + i32.const 6 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 28 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3745,76 +4004,116 @@ br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 28 + i32.const 20 memory.fill + i32.const 1 + call $~lib/number/I32#toString + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 3 - call $templateliteral/Ref#constructor - local.tee $0 + local.get $0 i32.store + local.get $0 + i32.const 3616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/number/I32#toString + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + i32.const 2 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - call $templateliteral/Ref#toString + i32.store + local.get $0 + i32.const 3648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 14 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/number/I32#toString local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - i32.const 0 + i32.const 2 + call $~lib/number/I32#toString + local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - i32.const 5664 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=8 + i32.const 3680 + i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=24 - i32.const 5620 + i32.store offset=8 + i32.const 3684 local.get $0 i32.store - i32.const 5616 + i32.const 3680 local.get $0 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=8 + i32.const 3680 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 5664 - i32.store offset=24 - i32.const 5628 - i32.const 5664 + local.get $1 + i32.store offset=8 + i32.const 3692 + local.get $1 i32.store - i32.const 5616 - i32.const 5664 + i32.const 3680 + local.get $1 i32.const 1 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=8 - i32.const 5616 + i32.const 3680 + i32.store offset=4 + i32.const 3680 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 - i32.const 5696 + i32.const 3728 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 60 + i32.const 15 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3829,47 +4128,108 @@ i32.const 0 i32.const 20 memory.fill + f64.const 1 + call $~lib/number/F64#toString + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 5760 - i32.const 0 - call $templateliteral/RecursiveObject#constructor - local.tee $0 + local.get $0 i32.store + local.get $0 + i32.const 4912 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 1 + call $~lib/number/F64#toString + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + f64.const 2 + call $~lib/number/F64#toString + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 1088 - local.get $0 - call $templateliteral/RecursiveObject#constructor - local.tee $0 + local.get $1 i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + local.get $1 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 1056 local.get $0 - call $templateliteral/RecursiveObject#constructor + i32.store + local.get $0 + i32.const 4944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f64.const 1 + call $~lib/number/F64#toString local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + f64.const 2 + call $~lib/number/F64#toString + local.tee $1 i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - call $templateliteral/RecursiveObject#toString + i32.store offset=8 + i32.const 4980 + local.get $0 + i32.store + i32.const 4976 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 4988 + local.get $1 + i32.store + i32.const 4976 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + i32.const 4976 + call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store local.get $0 - i32.const 5856 + i32.const 5024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 125 + i32.const 24 i32.const 3 call $~lib/builtins/abort unreachable @@ -3878,839 +4238,479 @@ i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - return - end - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - block $invalid - block $templateliteral/RecursiveObject - block $templateliteral/Ref - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return - end - unreachable - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:templateliteral - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add + i32.const 16 + i32.sub global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 + i32.const 5904 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer - local.get $0 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1088 i32.store - local.get $0 - local.set $2 + i32.const 2 + call $~lib/number/I32#toString + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - else - i32.const 1 - end + local.get $0 + i32.const 5072 + call $~lib/string/String.__eq i32.eqz if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end + i32.const 0 + i32.const 1120 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable end - block $__inlined_func$~lib/util/string/compareImpl$91 - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$91 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - local.set $3 + i32.const 1120 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $0 + i32.store offset=8 + i32.const 5104 + local.get $0 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5136 + call $~lib/string/String.__eq i32.eqz - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - local.tee $3 - local.get $2 - i32.add - local.tee $4 - i32.eqz - if + if + i32.const 0 + i32.const 1120 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1184 - return - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $4 - i32.store offset=4 - local.get $4 - local.get $0 - local.get $2 - memory.copy - local.get $2 - local.get $4 - i32.add - local.get $1 - local.get $3 - memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if + i32.const 1088 + i32.store offset=8 + i32.const 5104 + i32.const 1088 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1184 - return - end - local.get $4 - i32.eqz - if + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $0 - i32.store + i32.store offset=8 + local.get $0 + i32.const 5200 + call $~lib/string/String#concat + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 1184 + i32.store offset=4 local.get $0 - select - return - end - loop $for-loop|0 - local.get $1 - local.get $3 - i32.gt_s + i32.const 5232 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - i32.store offset=4 - local.get $5 - if - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $2 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $2 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.const 0 + i32.const 1120 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - i32.const 0 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1180 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - local.get $4 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 2 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=12 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $4 - i32.lt_s + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=8 + i32.const 1088 + i32.const 5200 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5264 + call $~lib/string/String.__eq + i32.eqz if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.store offset=4 - local.get $6 - if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $5 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $6 - i32.const 1 - i32.shl - memory.copy - local.get $3 - local.get $6 - i32.add - local.set $3 - end - local.get $1 - if - local.get $5 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 1184 - local.get $1 - i32.const 1 - i32.shl - memory.copy - local.get $1 - local.get $3 - i32.add - local.set $3 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const 0 + i32.const 1120 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=12 + local.get $0 + i32.const 1088 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5296 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $templateliteral/Ref#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $templateliteral/Ref#constructor + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 5360 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 51 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $5 + i32.store offset=20 + local.get $0 + call $templateliteral/Ref#toString + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.shl - i32.add + i32.store offset=16 + local.get $1 + local.get $3 + call $~lib/string/String#concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 5392 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $templateliteral/Ref#toString + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const -2 - i32.and - memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store - local.get $0 - local.get $1 - call $~lib/util/string/joinStringArray - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $templateliteral/Ref#constructor (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 + call $templateliteral/Ref#toString + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + i32.const 5444 + local.get $1 + i32.store + i32.const 5440 + local.get $1 i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + i32.const 5452 + local.get $0 + i32.store + i32.const 5440 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $templateliteral/Ref#toString (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=12 + i32.const 5440 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 5488 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 53 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $templateliteral/Ref#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $templateliteral/Ref#toString + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 5664 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + i32.const 5620 + local.get $0 + i32.store + i32.const 5616 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - br_if $folding-inner0 + i32.const 5616 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 5664 + i32.store offset=24 + i32.const 5628 + i32.const 5664 + i32.store + i32.const 5616 + i32.const 5664 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + i32.const 5616 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 local.get $0 - i32.load - call $~lib/number/I32#toString - local.set $0 + i32.const 5696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 5904 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer - i32.const 5328 + i32.const 5760 + i32.const 0 + call $templateliteral/RecursiveObject#constructor + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - i32.const 5328 + global.get $~lib/memory/__stack_pointer + i32.const 1088 local.get $0 - call $~lib/string/String#concat + call $templateliteral/RecursiveObject#constructor + local.tee $0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $templateliteral/RecursiveObject#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $templateliteral/RecursiveObject#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.lt_s - if - i32.const 38704 - i32.const 38752 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store offset=4 - local.get $1 - i32.eqz - if + i32.const 1056 + local.get $0 + call $templateliteral/RecursiveObject#constructor + local.tee $0 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store + i32.store offset=16 local.get $0 - i32.load + call $templateliteral/RecursiveObject#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 125 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer return end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - call $templateliteral/RecursiveObject#toString - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 5824 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - i32.const 5824 - local.get $0 - i32.store - i32.const 5824 - local.get $0 + i32.const 38704 + i32.const 38752 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5824 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - i32.const 5832 - local.get $1 - i32.store - i32.const 5824 - local.get $1 i32.const 1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 5824 - i32.store - i32.const 5824 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/ternary.release.wat b/tests/compiler/ternary.release.wat index fda76df259..fa841a2a0c 100644 --- a/tests/compiler/ternary.release.wat +++ b/tests/compiler/ternary.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32 i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32))) (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32 i32) (result i32))) (type $4 (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) @@ -14,12 +14,6 @@ (export "testDropWithTypeMismatch" (func $ternary/testDropWithTypeMismatch)) (export "memory" (memory $0)) (export "testVoidInclTypeMismatch" (func $export:ternary/testVoidInclTypeMismatch)) - (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 - local.get $2 - local.get $0 - select - ) (func $ternary/testDropWithTypeMismatch (param $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -47,6 +41,12 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + local.get $2 + local.get $0 + select + ) (func $export:ternary/testVoidInclTypeMismatch (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/throw.release.wat b/tests/compiler/throw.release.wat index d1427154ca..7336e48213 100644 --- a/tests/compiler/throw.release.wat +++ b/tests/compiler/throw.release.wat @@ -45,766 +45,179 @@ (export "doThrow" (func $throw/doThrow)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/itcms/step (local $0 i32) (local $1 i32) - i32.const 1488 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i64) + (local $3 i32) + (local $4 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1392 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $3 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$92 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34516 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34516 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $3 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$92 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $3 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1392 - i32.const 132 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $1 - i32.load offset=12 - local.tee $0 - i32.const 2 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 1728 - i32.load - i32.gt_u - if - i32.const 1488 - i32.const 1552 - i32.const 21 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - i32.const 1732 - i32.add - i32.load - i32.const 32 - i32.and - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $0 - local.get $1 - global.get $~lib/rt/itcms/white - i32.eqz - i32.const 2 - local.get $3 - select - local.get $2 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 268 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $3 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1632 - i32.const 270 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if (result i32) - local.get $3 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $3 - local.get $3 - i32.const 1073741820 - i32.ge_u - select - local.tee $3 - i32.clz - i32.sub - local.tee $4 - i32.const 7 - i32.sub - local.set $2 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $3 - i32.const 16 - i32.lt_u - local.get $2 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 284 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.set $5 - local.get $1 - i32.load offset=4 - local.tee $4 - if - local.get $4 - local.get $5 - i32.store offset=8 - end - local.get $5 - if - local.get $5 - local.get $4 - i32.store offset=4 - end - local.get $1 - local.get $0 - local.get $2 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=96 - i32.eq - if - local.get $1 - local.get $5 - i32.store offset=96 - local.get $5 - i32.eqz - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - i32.const -2 - local.get $3 - i32.rotl - i32.and - local.set $3 - local.get $1 - local.get $3 - i32.store offset=4 - local.get $3 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const -2 - local.get $2 - i32.rotl - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 201 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 203 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $2 - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $1 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 221 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $6 - i32.const 4 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $3 - i32.store - end - local.get $4 - local.get $2 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 12 - i32.lt_u - if - i32.const 0 - i32.const 1632 - i32.const 233 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 4 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 1632 - i32.const 234 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - else - i32.const 31 - i32.const 1073741820 - local.get $2 - local.get $2 - i32.const 1073741820 - i32.ge_u - select - local.tee $2 - i32.clz - i32.sub - local.tee $3 - i32.const 7 - i32.sub - local.set $5 - local.get $2 - local.get $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - end - local.tee $2 - i32.const 16 - i32.lt_u - local.get $5 - i32.const 23 - i32.lt_u - i32.and - i32.eqz - if - i32.const 0 - i32.const 1632 - i32.const 251 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - local.set $3 - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - local.get $3 - i32.store offset=8 - local.get $3 - if - local.get $3 - local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $5 - i32.shl - i32.or - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $0 - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/itcms/step - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $3 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34516 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $3 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - return - end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $3 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $3 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1392 - i32.const 229 - i32.const 20 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end @@ -1039,69 +452,627 @@ end return end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$92 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34516 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$92 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1728 + i32.load + i32.gt_u + if + i32.const 1488 + i32.const 1552 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1732 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1632 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1632 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if i32.const 0 - global.set $~lib/rt/itcms/state + i32.const 1632 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable end - ) - (func $throw/doThrow - global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1632 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1748 - i32.lt_s + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz if - i32.const 34544 - i32.const 34592 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1632 + i32.const 251 + i32.const 14 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1696 - i32.const 1168 - i32.const 3 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable end - return + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return end - unreachable ) (func $~start (local $0 i32) @@ -1208,8 +1179,6 @@ i32.store i32.const 1584 global.set $~lib/rt/itcms/fromSpace - memory.size - drop global.get $~lib/rt/itcms/state i32.const 0 i32.gt_s @@ -1240,4 +1209,33 @@ unreachable end ) + (func $throw/doThrow + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1748 + i32.lt_s + if + i32.const 34544 + i32.const 34592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1696 + i32.const 1168 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) ) diff --git a/tests/compiler/typealias.release.wat b/tests/compiler/typealias.release.wat index 997ab9cfcc..19dc83cfe9 100644 --- a/tests/compiler/typealias.release.wat +++ b/tests/compiler/typealias.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) (type $1 (func (param i32 i32 i32 i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 i32) (result i32))) + (type $3 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33948)) (memory $0 1) @@ -19,65 +19,6 @@ (export "alias" (func $typealias/alias)) (export "memory" (memory $0)) (start $~start) - (func $typealias/outer_function~inner_function - i32.const 1136 - i32.const 1136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 17 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $typealias/alias (param $0 i32) (result i32) - local.get $0 - ) - (func $~start - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1180 - i32.lt_s - if - i32.const 33968 - i32.const 34016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1056 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - i32.const 1168 - i32.load - call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -240,4 +181,63 @@ global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1180 + i32.lt_s + if + i32.const 33968 + i32.const 34016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1056 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1168 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $typealias/outer_function~inner_function + i32.const 1136 + i32.const 1136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + ) + (func $typealias/alias (param $0 i32) (result i32) + local.get $0 + ) ) diff --git a/tests/compiler/typeof.release.wat b/tests/compiler/typeof.release.wat index 5a767c425a..f2e06714bf 100644 --- a/tests/compiler/typeof.release.wat +++ b/tests/compiler/typeof.release.wat @@ -4,9 +4,9 @@ (type $2 (func (param i32 i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32 i32 i32))) - (type $5 (func (param i32 i32 i64))) - (type $6 (func (result i32))) - (type $7 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -54,58 +54,167 @@ (data $17.1 (i32.const 1816) " ") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/rt/itcms/visitRoots - (local $0 i32) - (local $1 i32) - i32.const 1264 - call $~lib/rt/itcms/__visit - global.get $typeof/c - local.tee $0 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1820 + i32.lt_s if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 34608 + i32.const 34656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 1552 - call $~lib/rt/itcms/__visit - i32.const 1360 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 i32.and - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1424 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 - i32.load offset=4 - i32.const -4 + local.get $1 + i32.const 7 i32.and - local.set $0 - br $while-continue|0 + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$78 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$78 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/rt/itcms/__visit (param $0 i32) (local $1 i32) @@ -651,119 +760,121 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1696 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1696 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $5 - local.set $1 - end - else - local.get $0 - i32.const 1572 - i32.add - local.get $1 - i32.gt_u - if + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $typeof/SomeClass + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1820 + i32.lt_s + if + i32.const 34608 + i32.const 34656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1696 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if return end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -845,342 +956,192 @@ i32.const 34592 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1696 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1696 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34588 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1696 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1264 + call $~lib/rt/itcms/__visit + global.get $typeof/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 i32.ne if local.get $0 i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 i32.const 3 i32.and + i32.const 3 i32.ne if i32.const 0 i32.const 1424 - i32.const 229 - i32.const 20 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 34588 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$70 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34588 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1696 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return - end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state - end - i32.const 0 - ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1696 - i32.const 347 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt$70 - i32.const 2048 - local.set $1 - loop $do-loop|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if global.get $~lib/rt/itcms/total i32.const 1 @@ -1218,12 +1179,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1236,7 +1196,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -1391,65 +1353,6 @@ memory.fill local.get $0 ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $typeof/SomeClass - block $~lib/function/Function<%28%29=>void> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1820 - i32.lt_s - if - i32.const 34608 - i32.const 34656 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - return - end - unreachable - ) (func $~start global.get $~started if @@ -1459,166 +1362,264 @@ global.set $~started call $start:typeof ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1820 - i32.lt_s - if - i32.const 34608 - i32.const 34656 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - local.get $1 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - local.get $0 - i32.eqz - i32.or - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $3 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - if (result i32) - local.get $2 - i32.const 7 - i32.and - local.get $1 - i32.const 7 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.or - else - i32.const 1 - end - i32.eqz - if - loop $do-loop|0 - local.get $2 - i64.load - local.get $1 - i64.load - i64.eq + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne if - local.get $2 - i32.const 8 - i32.add - local.set $2 + local.get $0 + global.set $~lib/rt/itcms/iter local.get $1 - i32.const 8 - i32.add - local.set $1 local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34588 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return end - block $__inlined_func$~lib/util/string/compareImpl$78 - loop $while-continue|1 + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34588 + i32.lt_u + if local.get $0 - local.tee $3 - i32.const 1 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.sub - local.set $0 - local.get $3 + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34588 + i32.ge_u if - local.get $2 - i32.load16_u - local.tee $5 - local.get $1 - i32.load16_u - local.tee $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$78 - local.get $2 - i32.const 2 - i32.add local.set $2 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1696 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock end end - i32.const 0 - local.set $3 + i32.const 10 + return end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - i32.eqz - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:typeof diff --git a/tests/compiler/unary.release.wat b/tests/compiler/unary.release.wat index 202341c088..6c711e0cb2 100644 --- a/tests/compiler/unary.release.wat +++ b/tests/compiler/unary.release.wat @@ -8,8 +8,6 @@ (export "memory" (memory $0)) (start $~start) (func $~start - (local $0 i32) - (local $1 i64) global.get $unary/i i32.const 1 i32.add diff --git a/tests/compiler/unify-local-flags.release.wat b/tests/compiler/unify-local-flags.release.wat index 25c3a2b4ca..7e2c3911fe 100644 --- a/tests/compiler/unify-local-flags.release.wat +++ b/tests/compiler/unify-local-flags.release.wat @@ -5,35 +5,35 @@ (export "testWhile" (func $unify-local-flags/testWhile)) (export "testDo" (func $unify-local-flags/testDo)) (export "memory" (memory $0)) - (func $unify-local-flags/testFor + (func $unify-local-flags/testWhile (local $0 i32) - loop $for-loop|0 + loop $while-continue|2 local.get $0 i32.const 255 + i32.and + i32.const 255 i32.lt_u if local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $while-continue|2 end end ) - (func $unify-local-flags/testWhile + (func $unify-local-flags/testFor (local $0 i32) - loop $while-continue|2 + loop $for-loop|0 local.get $0 i32.const 255 - i32.and - i32.const 255 i32.lt_u if local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|2 + br $for-loop|0 end end ) diff --git a/tests/compiler/while.release.wat b/tests/compiler/while.release.wat index c90bf786b3..90a58e5b7a 100644 --- a/tests/compiler/while.release.wat +++ b/tests/compiler/while.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32))) - (type $3 (func (result i32))) + (type $1 (func (result i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func (param i32 i32 i32 i32))) (type $6 (func (param i32 i32 i64))) @@ -34,132 +34,347 @@ (data $9 (i32.const 1488) "\05\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/itcms/visitRoots + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) - i32.const 1296 - call $~lib/rt/itcms/__visit - i32.const 1104 - call $~lib/rt/itcms/__visit - global.get $~lib/rt/itcms/pinSpace - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|0 - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.const 3 - i32.ne - if + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state i32.const 0 - i32.const 1168 - i32.const 160 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return end - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and local.set $0 - br $while-continue|0 - end - end - ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $1 - global.get $~lib/rt/itcms/iter - i32.eq - if - local.get $1 - i32.load offset=8 - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 148 - i32.const 30 - call $~lib/builtins/abort - unreachable + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end end - local.get $0 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink$128 - local.get $1 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter i32.load offset=4 i32.const -4 i32.and - local.tee $0 - i32.eqz + i32.eq if - local.get $1 - i32.load offset=8 - i32.eqz - local.get $1 - i32.const 34280 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 i32.and - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 128 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end end - br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end - local.get $1 - i32.load offset=8 - local.tee $2 + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne if i32.const 0 i32.const 1168 - i32.const 132 - i32.const 16 + i32.const 229 + i32.const 20 call $~lib/builtins/abort unreachable end local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $0 + i32.const 34280 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34280 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1440 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$128 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34280 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$128 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 local.get $2 i32.load offset=4 i32.const 3 @@ -231,6 +446,70 @@ global.set $~lib/rt/itcms/visitCount end ) + (func $while/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1512 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 34304 + i32.const 34352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -623,119 +902,90 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $2 - local.get $1 - i64.extend_i32_u - i64.lt_u - if - i32.const 0 - i32.const 1440 - i32.const 382 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $3 - i32.const 4 - i32.add - local.get $1 - i32.gt_u - if - i32.const 0 - i32.const 1440 - i32.const 389 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.const 16 - i32.sub - local.tee $5 - i32.eq - if - local.get $3 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $while/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid + end + return + end + return + end + return + end + local.get $0 i32.load - local.set $4 - local.get $5 - local.set $1 + call $~lib/rt/itcms/__visit + return end - else + return + end + unreachable + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.tee $1 + if (result i32) local.get $0 - i32.const 1572 - i32.add local.get $1 - i32.gt_u - if + i32.ctz + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -2 + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else i32.const 0 - i32.const 1440 - i32.const 402 - i32.const 5 - call $~lib/builtins/abort - unreachable end end - local.get $2 - i32.wrap_i64 - i32.const -16 - i32.and - local.get $1 - i32.sub - local.tee $3 - i32.const 20 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 4 - i32.add - local.get $3 - i32.add - local.tee $3 - i32.const 2 - i32.store - local.get $0 - local.get $3 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/tlsf/initialize (local $0 i32) @@ -817,320 +1067,162 @@ i32.const 34288 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/itcms/step (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $break|0 - block $case2|0 - block $case1|0 - block $case0|0 - global.get $~lib/rt/itcms/state - br_table $case0|0 $case1|0 $case2|0 $break|0 - end - i32.const 1 - global.set $~lib/rt/itcms/state - i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/visitCount - return - end - global.get $~lib/rt/itcms/white - i32.eqz - local.set $1 - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|1 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - global.set $~lib/rt/itcms/iter - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - i32.const 0 - global.set $~lib/rt/itcms/visitCount - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - global.get $~lib/rt/itcms/visitCount - return - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|1 - end - end + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if i32.const 0 - global.set $~lib/rt/itcms/visitCount - call $~lib/rt/itcms/visitRoots - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.set $0 - loop $while-continue|0 - local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - global.get $~lib/rt/itcms/iter - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - loop $while-continue|2 - local.get $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $1 - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 3 - i32.and - i32.ne - if - local.get $0 - local.get $2 - i32.const -4 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - i32.const 20 - i32.add - call $~lib/rt/__visit_members - end - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.set $0 - br $while-continue|2 - end - end - global.get $~lib/rt/itcms/fromSpace - local.set $0 - global.get $~lib/rt/itcms/toSpace - global.set $~lib/rt/itcms/fromSpace - local.get $0 - global.set $~lib/rt/itcms/toSpace - local.get $1 - global.set $~lib/rt/itcms/white - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - i32.const 2 - global.set $~lib/rt/itcms/state - end - global.get $~lib/rt/itcms/visitCount - return + i32.const 1440 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/iter - local.tee $0 - global.get $~lib/rt/itcms/toSpace - i32.ne - if - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -4 - i32.and - global.set $~lib/rt/itcms/iter - global.get $~lib/rt/itcms/white - i32.eqz - local.get $1 - i32.const 3 - i32.and - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 229 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 34280 - i32.lt_u - if - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - else - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.sub - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 34280 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - i32.const 15 - i32.and - i32.const 1 - local.get $0 - select - if (result i32) - i32.const 1 - else - local.get $2 - i32.load - i32.const 1 - i32.and - end - if - i32.const 0 - i32.const 1440 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load - i32.const 1 - i32.or - i32.store - local.get $2 - call $~lib/rt/tlsf/insertBlock - end - end - i32.const 10 - return + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 end - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - global.get $~lib/rt/itcms/toSpace - i32.store offset=8 - i32.const 0 - global.set $~lib/rt/itcms/state + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 i32.load offset=4 - i32.const -2 + i32.const -4 i32.and - local.tee $1 - if (result i32) + local.set $0 + loop $while-continue|0 local.get $0 local.get $1 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) + i32.ne + if local.get $0 - local.get $1 - i32.ctz - local.tee $2 - i32.const 2 - i32.shl - i32.add i32.load offset=4 - local.tee $1 - i32.eqz + i32.const 3 + i32.and + i32.const 3 + i32.ne if i32.const 0 - i32.const 1440 - i32.const 347 - i32.const 18 + i32.const 1168 + i32.const 160 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load offset=96 - else - i32.const 0 + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 end end ) @@ -1190,12 +1282,11 @@ local.tee $1 i32.eqz if - memory.size - local.tee $1 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + memory.size + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -1208,7 +1299,9 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 + local.set $3 + local.get $1 + local.get $3 local.get $1 local.get $3 i32.gt_s @@ -1363,6 +1456,9 @@ memory.fill local.get $0 ) + (func $~start + call $start:while + ) (func $start:while (local $0 i32) (local $1 i32) @@ -1538,11 +1634,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 br_if $while-continue|05 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1560,11 +1655,10 @@ local.tee $0 i32.const 10 i32.ne + local.tee $1 br_if $while-continue|07 end - local.get $0 - i32.const 10 - i32.ne + local.get $1 if i32.const 0 i32.const 1056 @@ -1877,99 +1971,4 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $while/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/object/Object - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid - end - return - end - return - end - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - return - end - unreachable - ) - (func $~start - call $start:while - ) - (func $while/Ref#constructor (result i32) - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1512 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - i32.const 34304 - i32.const 34352 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) ) diff --git a/tsconfig-base.json b/tsconfig-base.json index 10a2d884e4..9695cb47c4 100644 --- a/tsconfig-base.json +++ b/tsconfig-base.json @@ -8,7 +8,6 @@ "noEmitOnError": true, "strictNullChecks": true, "experimentalDecorators": true, - "preserveConstEnums": false, - "downlevelIteration": true + "preserveConstEnums": false } }